2009-08-06 12 views
6

Przesyłam obrazy (reprezentowane przez FileField) i muszę zmienić nazwę tych plików po ich przesłaniu.Wybierz nazwę przesłanego pliku za pomocą Django

chcę, żeby być sformatowane tak:

"%d-%d-%s.%s" % (width, height, md5hash, original_extension)

Czytałem dokumentację, ale nie wiem, czy muszę napisać własną klasę FileSystemStorage lub moje własne klasy FileField lub. ..? Wszystko jest tak powiązane, że nie wiem od czego zacząć.

Odpowiedz

18

Nie musisz pisać własnej klasy FileStorage ani niczego, co jest skomplikowane.

Parametr "upload_to" w File/ImageFields może przyjąć funkcję, która zwraca ścieżkę/plik do użycia.

Jak to zrobić już odpowiedział here

-1

Moje pierwsze instynkt podczas czytania tego było to, że trzeba przeładowywać ustawiony metodę modelu i użyć os.rename() metoda, ale to powoduje dużo napowietrznych i ogólnie jest to od początku do końca kłopotliwe. Jeśli chcesz po prostu zmienić nazwę pliku, ale nie chcesz wprowadzać w nim żadnych fizycznych zmian (zmiana rozmiaru, duplikowanie itp.), Zdecydowanie polecam podejście sugerowane powyżej.

Powiązane problemy