[英]Google app engine with python
我是使用python的Google應用引擎的新手,請幫助我!
這是我的html代碼:
<form action="" method="POST">
<div class="form-group">
<label for="uploaded_file">Attached file:</label>
<input type="file" id="uploaded_file" name="uploaded_file">
</div>
<div class="form-group">
<button class="btn-primary" type="submit">Save note</button>
</div>
</form>
這是我的python代碼:
def post(self):
uploaded_file = self.request.POST.get('uploaded_file')
file_name = getattr(uploaded_file, 'filename', None)
file_content = getattr(uploaded_file, 'file', None)
if uploaded_file:
self.response.out.write(uploaded_file)
self.response.out.write(file_name)
self.response.out.write(file_content)
我將項目部署到Google App Engine並訪問該網站。 我選擇一張圖片,然后單擊“提交”按鈕,它可以顯示上載的文件(文件名)。 但是,file_name和file_content顯示為None。
如果我修改我的代碼:
def post(self):
uploaded_file = self.request.POST.get('uploaded_file')
file_name = getattr(uploaded_file, 'filename')
file_content = getattr(uploaded_file, 'file')
它會顯示:
File "C:\Users\pc2\Desktop\test\main.py", line 98, in post
file_name = getattr(uploaded_file, 'filename')
AttributeError: 'unicode' object has no attribute 'filename'
請有人幫我獲取文件或圖片!
在您的表單中,您需要具有'enctype'屬性,以便正確處理上載的文件- 有關enctype的更多詳細信息,請參見此答案 。 您的表單標簽應如下所示:
<form action="" method="POST" enctype="multipart/form-data">
將您的發布方法更改為此:
def post(self):
uploaded_file = self.request.POST.get('uploaded_file')
file_name = getattr(uploaded_file, 'filename', None)
file_content = getattr(uploaded_file, 'file', None)
if uploaded_file is not None:
self.response.out.write(uploaded_file)
self.response.out.write(file_name)
self.response.out.write(file_content)
if uploaded_file:
更改為, if uploaded_file is not None:
此處的更改正在更改。 這是因為成功上傳的文件將不會為None,但是如果經過測試,仍會失敗。 我將把'None'參數保留在getattr上-如果用戶單擊Submit卻沒有上傳文件,這些將防止異常。
最后,上傳的文件沒有file_content屬性,因此該屬性始終為None。 如果要訪問文件的原始字節,則需要執行
file_content = uploaded_file.file.read()
請注意,文件內容可能非常大,如果僅將其寫到響應中,則將不會呈現為圖像-您只會看到原始字節。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.