-
Пишу загрузку файлов. Если файл с таким именем есть, но он перезаписывается, а если нету, то просто сохраняется:
Но когда я пытаюсь взять содержимое файла file.data , то оно почему то пустое. Поскажите, пожалуйста, что я делаю не так?def iconupload(request, profile):
"Allow to upload icon "
if request.method == 'POST':
form = IconUploadForm(request.POST, request.FILES)
if form.is_valid():
if form.cleaned_data.get('file'):
file = form.cleaned_data['file']
file.filename = 'id_%d.png' % (profile.id)
f = profile._meta.get_field('uploaded_icon')
if profile.uploaded_icon is None:
f.save_form_data(profile, file)
else:
fd = open('%s/%s/id_%d.%s' % (settings.MEDIA_ROOT, f.upload_to, profile.user_id, settings.ICON_FORMAT.lower()), 'wb')
fd.write(file.data)
fd.close()
profile.save()
return HttpResponseRedirect('/upload/successfull/')
else:
form = IconUploadForm()
return render_to_response(request, 'iconupload.html', { 'form': form,
'icon_height': settings.ICON_HEIGHT,
'icon_width': settings.ICON_WIDTH,
'icon_format': settings.ICON_FORMAT.lower(),
'icon_size': settings.ICON_SIZE / 1024,
}) -
Ваш
file:file = form.cleaned_data['file']это такой враппер, хранящий оригинальное имя файла и файл. Его
.data— это уже настоящий UploadedFile, у которого можно попросить контент. Соответственно нужно:fd.write(file.data.data)P.S. Написал в django-developers, что надо бы этот враппер убрать, всем мешает.
-
Выяснилось по поводу переписанного аплоадинга. Из за этого все и было плохо. Уже все поремонтилось
-
А в django-developers сказали, что уже все починили недавно в рамках общего причесывания интерфейса UploadedFile: http://code.djangoproject.com/ticket/7614
-
А в django-developers сказали, что уже все починили недавно в рамках общего причесывания интерфейса UploadedFileИ сломали тем самым валидацию: http://code.djangoproject.com/ticket/7673
И уже несколько дней чинить не хотят. Может быть Вы как-то поспособствуете? -
Да чего уж там способствовать... Несколько дней — не деньги. Пофиксят.

