Edit: Vui lòng sử dụng các câu trả lời được lựa chọn ở trên - mã dưới đây làm việc cho các câu hỏi nhưng nó không được khuyến khích.
Các tập tin hình ảnh mà bạn đang tải lên có thể được tìm thấy trong:
request.FILES['image'] # assuming input name is called 'image'
Nó không trả lại cho bạn một đối tượng hình ảnh, mà đúng hơn là một đối tượng uploadedfile. Bạn có thể đọc phần tài liệu này (Tôi giả sử bạn đang sử dụng Django 1.3.x): https://docs.djangoproject.com/en/1.3/topics/http/file-uploads/#handling-uploaded-files
Nó bao gồm các trường và phương thức có sẵn trong đối tượng UploadedFile và cũng là cách phổ biến để xử lý tệp tải lên theo cách thủ công. Bạn có thể sử dụng cùng một phương thức để ghi tệp hình ảnh vào một đối tượng tệp và sau đó lưu nó vào ImageField của bạn.
Mã sau đây sẽ hoạt động nhưng không phải là mã an toàn. Tôi giả sử bạn đang sử dụng máy * nix, nếu không, hãy lưu tệp đích ở một nơi khác.
@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
Những điều khác cần lưu ý: Hãy chắc chắn rằng bạn tạo có các thuộc tính sau cho nó hoạt động:
<form enctype="multipart/form-data" ... >
tôi không nhớ sử dụng này là bình thường, nhưng thực sự, biểu mẫu được khuyến khích.
Nguồn
2012-01-11 16:35:53
hãy nhìn vào [django-photologue] (http://code.google.com/p/django-photologue/), tất cả những gì bạn muốn làm đã được thực hiện :) – juliomalegria
cảm ơn, tôi không cần tất cả các tính năng này, tôi đang tìm kiếm cơ bản nhất sử dụng imageField :) –