0

ASIFormDataRequestを使用してiPhoneからdjangoに画像をアップロードしようとしています。

私のdjangoviews.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];

どんな提案でも歓迎し、感謝します。

4

1 に答える 1

1

iOS については何も知りませんが、 keynameに値を指定しているように見えますが、フォームにそのフィールドがありませんjid。代わりにあります。そのフィールドは必須であり、提供していないため、フォームは無効です。

于 2012-03-16T04:54:01.427 に答える