Django, получить изображение, используя URL и сохранить его ThumbnailerImageField of easy_thumbnails
Я использовал easy_thumbnails
хранить изображения в моем приложении. У меня есть название модели Profile
который имеет picture
поле, которое является ThumbnailerImageField. В моем коде я выбираю изображение, используя URL-адрес, который у меня есть, используя следующий код
f = urllib.request.urlretrieve(picture_url)
Теперь f[0] это строка, содержащая путь к файлу в /tmp/
каталог. Я хочу сохранить это изображение в моем поле изображения. Итак, я использовал следующий код
profile.picture.save(os.path.basename(picture), File(open(f[0])))
Но проблема в том, что сохраненный файл по какой-то причине поврежден, и я не могу его открыть. Принимая во внимание, что когда я проверяю файл в/tmp/
это правильный файл изображения. Кто-нибудь может указать, что я здесь делаю не так?
РЕДАКТИРОВАТЬ:
Мое определение поля следующееpicture = ThumbnailerImageField(upload_to=name, max_length=3072)
а также name
как следует
def name(inst, fname):
f = sha256((fname + str(timezone.now())).encode('utf-8')).hexdigest()
f += fname
return '/'.join([inst.__class__.__name__, f])
1 ответ
from django.core.files.temp import NamedTemporaryFile
try:
img_temp = NamedTemporaryFile(delete=True)
img_temp.write(
urllib2.urlopen(picture_url).read()
)
img_temp.flush()
profile.picture.save('picture.jpg', File(img_temp))
profile.save()
except:
pass