Django: сохранение файла изображения из формы - PullRequest
4 голосов
/ 08 июля 2010

Я хочу сохранить изображение, которое было загружено с помощью PaletteGenForm, следующим образом:

#Form 
class PaletteGenForm(forms.Form):
    im = forms.ImageField(required=True)

#View
def palette_gen_view(request):
    PATH_OF_IMAGE_TO_BE_PALETTED= MEDIA_ROOT+ "/tobesaved.png"
    if request.method == 'POST':
        form = PaletteGenForm(request.POST, request.FILES)
        if form.is_valid():
            im = Image.open(StringIO(request.FILES['im']['content']))
            im.save(PATH_OF_IMAGE_TO_BE_PALETTED, "PNG")
            #call some functions to generate pallete
            return #returns the palette of the image.
    else:
        form = PaletteGenForm()
    return render_to_response('palette_generate.html', {'form': form,})

Однако вот моя ошибка при вызове этого URL:

'InMemoryUploadedFile' object is unsubscriptable

Ответы [ 3 ]

4 голосов
/ 08 июля 2010

Попробуйте это:

im = Image.open(StringIO(request.FILES['im'].read()))
1 голос
/ 08 июля 2010

Не уверен, что вам нужно обернуть его в StringIO вообще. Попробуйте

im = Image.open(request.FILES['im']['content'])
0 голосов
/ 08 июля 2010

попробуйте прочитать данные из формы cleaned_data

im = Image.open(StringIO(form.cleaned_data['im'].read()))

для меня это сработало (не пробовал читать из запроса)

...