从iphone form.is_valid()上传文件到django失败

时间:2012-03-16 01:58:48

标签: iphone django asiformdatarequest

我正在尝试使用ASIFormDataRequest从iphone将图像上传到django。

在我的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 个答案:

答案 0 :(得分:1)

我对iOS一无所知,但我认为您为密钥name提供了一个值,但您的表单中没有该字段 - 您有jid代替。由于该字段是必填字段,而您未提供该字段,因此该表单无效。