我正在尝试使用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];
请,任何建议都欢迎和赞赏。
答案 0 :(得分:1)
我对iOS一无所知,但我认为您为密钥name
提供了一个值,但您的表单中没有该字段 - 您有jid
代替。由于该字段是必填字段,而您未提供该字段,因此该表单无效。