Szukam sposobu na sprzedanie komuś karty na imprezie, która będzie miała unikalny kod, który będzie mógł później wykorzystać, aby pobrać plik (mp3, pdf itp.) Tylko jeden raz i maskę prawdziwa lokalizacja pliku, więc osoba doświadczona, pobierająca plik, nie będzie mogła pobrać tego pliku więcej niż raz. Byłoby miło hostować plik na Amazon S3, aby zaoszczędzić na przepustowości, w której nasz serwer jest zlokalizowany.Co to jest rozwiązanie Django/Python do dostarczania jednorazowego adresu URL do pobierania plików?
Moja myśl o kodach polega na wstępnym wygenerowaniu niepowtarzalnych kodów, które zostaną wydrukowane na kartach i zapisaniu ich w bazie danych, która może również zawierać pole przechowujące liczbę pobrań pliku. W ten sposób możemy ustawić liczbę prób, które pozwolilibyśmy użytkownikowi na pobranie pliku.
Częścią, której potrzebuję kierunku, jest to, jak ukryć/zamaskować oryginalną lokalizację pliku, aby ludzie nie mogli ukraść tego adresu URL, a następnie pobrać plik tyle razy, ile chcą. Zrobiłem wyszukiwania w Google i albo nie szukam przy użyciu właściwych słów kluczowych, albo nie ma zbyt wielu bibliotek lub fragmentów już tam dla tego typu rzeczy.
Zgaduję, że być może uda mi się poradzić sobie z czymś przy użyciu django.views.static.serve
, który działa jako rodzaj pośrednika między rzeczywistym plikiem a użytkownikiem pobierającym plik. Jedyną wadą tej metody wydaje mi się, że musiałbym używać rzeczywistego serwera WWW i nie byłbym w stanie przechowywać pliku na Amazon S3.
Wszelkie sugestie lub przemyślenia są mile widziane.
To jest najbardziej podstawowe podejście, ale może sprawić, że serwer zostanie uszkodzony, jeśli serwujesz wiele z tych plików, ponieważ cały plik musi być przesyłany strumieniowo przez gruby wątek serwera Python/Django. –
Tak, to nie jest superszybkie rozwiązanie, ale wydaje się, że w jego sytuacji wydajność nie będzie problemem. Musi fizycznie sprzedawać każdemu użytkownikowi kartę, więc nie spodziewałbym się niczego blisko nawet 100 pobrań dziennie. –