无法使用 python cgi 脚本引发“文件下载”对话框

Posted

技术标签:

【中文标题】无法使用 python cgi 脚本引发“文件下载”对话框【英文标题】:unable to Raise a "File Download" Dialog Box using python cgi script 【发布时间】:2013-06-21 21:38:29 【问题描述】:

为了在客户端窗口中弹出一个下载框(对于 sqlite3.db 文件)。 我写了这段代码:

#!/usr/bin/env python
import os
# HTTP Header
print "Content-Type:application/octet-stream; name=\"sqlite3.db\"\r\n";
print "Content-Disposition: attachment; filename=\"sqlite3.db\"\r\n\n";

# Actual File Content will go hear.
fo = open("sqlite3.db", "rb")

str = fo.read();
print str

# Close opend file
fo.close()

我遇到一个错误(从错误日志中复制)提到 “IOError: [Errno 2] No such file or directory: 'sqlite3.db'”

我还在 /var/www/cgi-bin/ 中粘贴了 python.py 和 sqlite3.db 我已经为两者分配了 0755 chmod。

我通过打印 Hello world 脚本来检查配置。

知道我的错误是什么吗?我仍然很困惑我应该在哪里提供可下载文件的路径?

【问题讨论】:

我假设您没有一个名为“sqlite3.db”的文件位于与调用脚本的目录相同的目录中...尝试打印os.getcwd() 可能是cgi脚本是在servers目录下执行的。 【参考方案1】:

HTTP 标头提前终止。 (print自己写换行)

print "Content-Type:application/octet-stream; name=\"sqlite3.db\"\r\n";
print "Content-Disposition: attachment; filename=\"sqlite3.db\"\r\n\n";

Abobe 线应该是:

print 'Content-Type:application/octet-stream; name="sqlite3.db'
print 'Content-Disposition: attachment; filename="sqlite3.db'
print

【讨论】:

以上是关于无法使用 python cgi 脚本引发“文件下载”对话框的主要内容,如果未能解决你的问题,请参考以下文章

python3.x搭建简单CGI服务器时cgi-bin下的脚本无法被解释执行

节点无法读取python保存的文件

如何使用 xampp 在 ubuntu 中运行 python cgi 脚本

Lighttpd cgi python无法运行系统进程

Google App Engine 上的错误 Python 2.7 - 无法使用 CGI 处理程序启用线程安全

Apache服务器中的Python Cgi脚本