好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

PythonCGI编程

文件上传实例:

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>

save_file.py脚本文件代码如下:

#!/usr/bin/python

import cgi, os

import cgitb; cgitb.enable()

form = cgi.FieldStorage()

# 获取文件名

fileitem = form['filename']

# 检测文件是否上传

if fileitem.filename:

# 设置文件路径

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,你必须替换文件分隔符,在window下只需要使用open()语句即可:

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

文件下载对话框

如果我们需要为用户提供文件下载链接,并在用户点击链接后弹出文件下载对话框,我们通过设置HTTP头信息来实现这些功能,功能代码如下:

#!/usr/bin/python

# HTTP Header

print "Content-Type:application/octet-stream; name=\"FileName\"\r\n";

print "Content-Disposition: attachment; filename=\"FileName\"\r\n\n";

# Actual File Content will go hear.

fo = open("foo.txt", "rb")

str = fo.read();

print str

# Close opend file

fo.close()

查看更多关于PythonCGI编程的详细内容...

  阅读:35次