编辑: 请使用上面选择的答案 - 下面的代码工作的问题,但不建议。
您正在上传的图像文件可以发现:
request.FILES['image'] # assuming input name is called 'image'
不退还您的Image对象,而是一个UploadedFile的对象。您可以阅读这部分文档(我假设您使用的是Django 1.3.x):https://docs.djangoproject.com/en/1.3/topics/http/file-uploads/#handling-uploaded-files
它涵盖了UploadedFile对象中可用的字段和方法,也是手动处理文件上传的常用方法。您可以使用相同的方法将图像文件写入文件对象,然后将其保存到ImageField中。
下面的代码应该可以工作,但它不是安全的代码。我假设你正在使用* nix机器,如果没有,请将目标文件保存在别的地方。
@csrf_exempt
def saveImage(request):
# warning, code might not be safe
up_file = request.FILES['image']
destination = open('/tmp/' + up_file.name , 'wb+')
for chunk in up_file.chunks():
destination.write(chunk)
destination.close()
img = someImage()
img.image.save(up_file.name, File(open('/tmp/' + up_file.name, 'r')))
img.save()
# return any response you want after this
其他事情需要说明:请确保您形成具有以下属性,它的工作:
<form enctype="multipart/form-data" ... >
我不记得这个用法是正常的,但实际上,表单建议。
看看[Django的photologue] (http://code.google.com/p/django-photologue/),所有你想做的事情已经完成:) – juliomalegria 2012-01-11 16:30:53
谢谢,我不需要所有这些功能,我正在寻找最基本的使用imageField :) – 2012-01-11 16:52:23