我们如何使用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("\\", "/" ))


以上是 我们如何使用Python CGI编程上传文件? 的全部内容, 来源链接: utcz.com/z/331240.html

回到顶部