我正在使用此處描述的技術將 POST 上傳的檔案保存到磁盤: 如何將 InMemoryUploadedFile 物件復制到磁盤
from django.core.files.storage import default_storage
from django.core.files.base import ContentFile
from django.conf import settings
data = request.FILES['image']
path = default_storage.save('tmp/%s' % filename, ContentFile(data.read()))
tmp_file = os.path.join(settings.MEDIA_ROOT, path)
該檔案確實被上傳并存盤在指定位置。但是,內容是亂碼。這是一個影像 - 當我查看存盤的檔案時,我看到字符不一樣并且影像檔案已損壞。但是,檔案大小與原始檔案大小相同。
我想,我需要在保存檔案之前進行一些轉換,但是如何/哪個...?
uj5u.com熱心網友回復:
強烈建議FileSystemStorage直接使用,而不是default_storage因為DEFAULT_FILE_STORAGE可以設定為另一個值。
from django.core.files.storage import FileSystemStorage
from django.http import HttpResponse
def simple_view(request):
in_memory_file_obj = request.FILES["file"]
FileSystemStorage(location="/tmp").save(in_memory_file_obj.name, in_memory_file_obj)
return HttpResponse("Success")
注意:解決方案測驗與Django 4.1
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/526621.html
標籤:django文件上传贮存
