我无法在名为'file.py'的python中执行CGI脚本。我希望从用户处输入一个excel文件作为输入(为此使用html表单),然后运行CGI确认文件是否已上传。但是,而是显示了整个Python代码。
使用 Xampp,Python 3.7 和Chrome浏览器。我将HTML放入Xampp的htdocs中,并将 file.py 放入Xampp的 cgi-bin 中。
我已经更改了字段的所有必需参数,例如Option,ScriptAlias,AddHandler。
这是我接受HTML文件的HTML代码行:
<form name="search" action="C:/xampp/cgi-bin/file.py" enctype = "multipart/form-data" method="get" >
<input type="file" name="filename" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" />
<input type="submit" value="Submit">
</form>
这是file.py的内容:(我尝试先打印一个简单的“ Hello”,而不是 message 变量,以查看是否有效,但无效)
#!\usr\bin\python
#!C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Python3.7
print "Content-Type: text/html; charset=utf-8\n\n";
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; charset=utf-8\n\n;
<html>
<body>
<p>%s</p>
</body>
</html>
""" % ("Helloooo")