загрузка файла в django из iphone form.is_valid () не удалась - PullRequest
0 голосов
/ 16 марта 2012

Я пытаюсь загрузить изображение в django с iphone с помощью ASIFormDataRequest.

в моем django views.py

class UploadFileForm(forms.Form):
    name = forms.CharField(max_length=255)
    file = forms.FileField()

@csrf_exempt
def upload_image(request):
    if request.method == 'POST':
            form = UploadFileForm(request.POST, request.FILES)
            if form.is_valid(): ##this is always fail
                newimage = Image(imgfile = request.FILES['image'])
                newimage.save()

                return HttpResponse('succeeded')
            else:
                return HttpResponse('failed')

в models.py

 class Image(models.Model):
         imgfile = models.FileField(upload_to='images/')

я получил это в settings.py

 MEDIA_ROOT = '/srv/www/media'

с помощью приведенного выше кода, я не могу проверить форму, но если я удаляю form.is_valid (), то изображение успешно загружено в / srv /www / media / images /

и следующий код iOS:

formRequest = [ASIFormDataRequest requestWithURL:url];
[formRequest setPostFormat:ASIMultipartFormDataPostFormat];
formRequest.delegate = self;
[formRequest setData:UIImageJPEGRepresentation(image, 1.0f) withFileName:fileName andContentType:@"image/jpeg" forKey:@"image"];
[formRequest setPostValue:userName forKey:@"name"];
[formRequest setRequestMethod:@"POST"];
[formRequest setPostFormat:ASIMultipartFormDataPostFormat];
[formRequest startAsynchronous];

пожалуйста, любые предложения приветствуются и приветствуются.

1 Ответ

1 голос
/ 16 марта 2012

Я ничего не знаю об iOS, но мне кажется, что вы предоставляете значение для ключа name, но у вас нет этого поля в вашей форме - вместо этого у вас есть jid.Поскольку это поле является обязательным, а вы его не предоставляете, форма недействительна.

...