Python 如何使用Python CGI编程进行文件上传?

Python 如何使用Python CGI编程进行文件上传?

要上传文件,HTML表单必须将enctype属性设置为multipart/form-data。文件类型的输入标记会创建一个“浏览”按钮。

阅读更多:Python 教程

示例

<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 = '文件“' + fn + '”已成功上传'
 
else:
   message = '未上传任何文件'
 
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("\", "/" ))

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程