【问题标题】:How to download file with CGI如何使用 CGI 下载文件
【发布时间】:2013-05-21 21:34:17
【问题描述】:

我想知道使用 CGI 下载我的 C:/ 目录中存在的文件的代码是什么(听起来可能很奇怪,但文件可能存在于另一台计算机的 C 的服务器中: /)。

我知道我必须使用 Content-Disposition,但我尝试了所有方法,我的 CGI 无法下载任何内容,只创建了一个名称为我提供的格式的空文件。在我尝试使它工作的许多方法中,这是基本代码:

cout << "Content-type:image/png\r\n";
cout << "Content-Disposition: attachment; filename=teste.png\r\n\r\n";

目前我使用图像作为数据类型,但稍后我想下载一个名为 .pac 的特定数据包。

感谢您的帮助,

莫默吉尔

【问题讨论】:

    标签: c++ cgi download


    【解决方案1】:

    看起来,你想上传文件而不是下载。

    在标题中打印文件名是不够的。 打印标题后,打开文件并以原始字节模式发送其内容,然后......完成。

    您会在客户端浏览器中看到一个弹出框,要求您保存文件。

    --

    std::cout

    因为“\r\n”不是网络标准化的,并且在 linux/android 下无法正常工作。

    【讨论】:

    • 好的,我明白了。但是考虑到我使用的是 cout,我怎样才能将文件路径传递到我希望保存文件的位置?
    • 我不确定您是否可以在服务器端执行此操作。这可能是客户端中严重的安全流程。漂亮的“.pac”实际上可能是一种病毒。
    • 我想我明白了,但我想在 CGI 脚本中有一种方法可以做到这一点。此外,总是(至少在我尝试时)加载文件时,浏览器无论如何都会在“下载”文件夹中创建一个副本;所以如果是病毒,那就太晚了:)
    • 在 Firefox 中,下载文件夹由“Firefox->options->General->Download”(firefox 21.0)选择,因为我不使用英文客户端,所以语法可能会有所不同。我认为每个浏览器几乎都一样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-06
    • 1970-01-01
    • 1970-01-01
    • 2015-06-26
    • 2014-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多