<p><strong>编辑:</strong>
请使用上面选择的答案-下面的代码适用于该问题,但不建议使用。</p>
<p>您正在上载的图像文件位于:</p>
<pre><code>request.FILES['image'] # assuming input name is called 'image'
</code></pre>
<p>它不会返回图像对象,而是返回UploadedFile对象。您可以阅读这部分文档(我假设您使用的是Django 1.3.x):<a href="https://docs.djangoproject.com/en/1.3/topics/http/file-uploads/#handling-uploaded-files" rel="nofollow">https://docs.djangoproject.com/en/1.3/topics/http/file-uploads/#handling-uploaded-files</a></p>
<p>它包括UploadedFile对象中可用的字段和方法,以及手动处理文件上载的常用方法。可以使用相同的方法将图像文件写入文件对象,然后将其保存到ImageField。</p>
<p>下面的代码应该可以工作,但它不是安全的代码。我假设您正在使用*nix machine,如果没有,请将目标文件保存到其他地方。</p>
<pre><code>@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
</code></pre>
<p>其他需要注意的事项:确保表单具有以下属性才能工作:</p>
<pre><code> <form enctype="multipart/form-data" ... >
</code></pre>
<p>我不记得这种用法是正常的,但实际上,表单是推荐的。</p>