【发布时间】:2014-10-01 11:36:46
【问题描述】:
我需要帮助来基本了解如何通过发布请求将文件上传到 Django 视图。这是我想将图片上传到的 Django 表单:
https://domfa.de/upload_profile/
这是这个确切的 Django 视图 URL 的 views.py 代码:
def profile_picture(request):
if request.POST:
form = UserProfileForm(request.POST, request.FILES)
obj = form.save(commit=False)
obj.user_id = request.user.id
obj.profile_picture = obj.profile_picture
obj.save()
return render_to_response('profile.html', args, RequestContext(request))
else:
formNew = UserProfileForm()
args = {}
args.update(csrf(request))
args['uid'] = request.user.id
args['form'] = formNew
return render_to_response('profile.html', args, RequestContext(request))
实际的表格非常简单,只有一个字段用于实际的个人资料图片:
class UserProfileForm(forms.ModelForm):
class Meta:
model = UserProfile
fields = ('profile_picture',)
def __init__(self, *args, **kwargs):
super(UserProfileForm, self).__init__(*args, **kwargs)
所以 Django 方面工作得很好,只要我登录,我总是能够成功上传图像。但是我被困在如何将图像发布到这个极其简单的 Django 视图中,我'已经使用单独的 NSUrl 请求以用户身份登录到 Django 服务器:
UIImage *picture = [UIImage imageNamed:@"myFile.png"];
NSData *imageData = UIImagePNGRepresentation(picture);
NSMutableURLRequest *request = [[NSMutableURLRequest alloc]
initWithURL:[NSURL
URLWithString:@"https://domfa.de/upload_profile/"]];
[request setHTTPMethod:@"POST"];
[request setValue:@"image/png" forHTTPHeaderField:@"Content-type"];
[request setHTTPBody:imageData];
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSLog(@"%@", returnData);
所以假设所有 Django 代码都可以正常工作,那么我的实际图片上传的 Objective-c 代码有什么问题?
另外,我如何在 NSLog 中从服务器获取响应消息,以便更好地了解服务器不接受文件 POST 请求的原因?
【问题讨论】:
标签: ios objective-c django post image-uploading