簡體   English   中英

帶有python的Google App引擎

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM