目前我的用戶能夠上傳檔案,因為我是通過 Heroku 部署的,所以我正在使用 Django-storages 上傳到 AWS S3 存盤桶。我正在使用如下所示的 CreateView/UpdateView,這很好用,但是我現在希望能夠在上傳到 AWS 之前對檔案運行操作,我的研究表明我可以在 form_valid 中使用temporary_file_path()來執行此操作我收到一個錯誤,UpdateView/CreateView
class project_update(LoginRequiredMixin, UpdateView):
model = Project
form_class = ProjectForm
template_name = "home/update_project.html"
context_object_name = 'project'
success_url = reverse_lazy("project-list")
def form_valid(self, form):
handle_uploaded_boq(form['boq_file'].temporary_file_path(), form.cleaned_data['project_title'])
return super(project_update, self).form_valid(form)
但是我收到以下錯誤:
'BoundField' object has no attribute 'temporary_file_path'
那么handle_uploaded_boq()在檔案上傳到 AWS 之前運行該操作的最佳方式是什么?
uj5u.com熱心網友回復:
要以 form_valid 方法訪問檔案,您可以使用
form.files['boq_file']
并訪問TemporaryUploadedFile類的上傳檔案的路徑,使用
form.files['boq_file'].temporary_file_path()
或者
form.files['boq_file'].file.name
注意:要獲取上傳檔案的路徑,上傳檔案必須是 TemporaryUploadedFile 類的物件,而不是 InMemoryUploadedFile 的物件。您可以通過將 setting.py 中的 FILE_UPLOAD_HANDLERS 更新為以下來處理它
FILE_UPLOAD_HANDLERS = [
'django.core.files.uploadhandler.TemporaryFileUploadHandler',
]
假設您在表單中使用的 file_field 的名稱是 boq_file
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/512078.html
