如何使用 Python CGI 程式設計進行檔案上傳?


要上傳檔案,HTML 表單 必須將enctype 屬性設定為 multipart/form-data。帶有檔案型別的輸入標記建立了一個“瀏覽”按鈕。

示例

<html>
<body>
   <form enctype = "multipart/form-data"
                     action = "save_file.py" method = "post">
   <p>File: <input type = "file" name = "filename" /></p>
   <p><input type = "submit" value = "Upload" /></p>
   </form>
</body>
</html>

輸出

以下表單是此程式碼的結果 −

File: Choose file
Upload

以下指令碼 save_file.py 用於處理檔案上傳 −

#!/usr/bin/python
import cgi, os
import cgitb; cgitb.enable()
form = cgi.FieldStorage()
# Get filename here.
fileitem = form['filename']
# Test if the file was uploaded
if fileitem.filename:
   # strip leading path from file name to avoid
   # directory traversal attacks
   fn = os.path.basename(fileitem.filename)
   open('/tmp/' + fn, 'wb').write(fileitem.file.read())
   message = 'The file "' + fn + '" was uploaded successfully'
 
else:
   message = 'No file was uploaded'
 
print """\
Content-Type: text/html\n
<html>
<body>
   <p>%s</p>
</body>
</html>
""" % (message,)

如果你在 Unix/Linux 上執行上述指令碼,那麼你需要像下面這樣替換檔案分隔符,否則在你的 Windows 機器上,上述open() 語句應該可以正常工作。

fn = os.path.basename(fileitem.filename.replace("", "/" ))

已更新時間: 09-9 月-2023

3000+ 瀏覽量

啟動您的 事業

透過完成課程取得認證

開始
廣告
© . All rights reserved.