編輯: 請使用上面選擇的答案 - 下面的代碼工作的問題,但不建議。
您正在上傳的圖像文件可以發現:
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