从mongoose服务器下载tar.gz

时间:2017-07-27 11:11:26

标签: c++ http mongoose-web-server

我正在尝试通过连接到mongoose Web服务器的Web GUI下载压缩文件。我认为天真的方法是将ifstream传递给ostream响应:

...
std::stringstream zip_location;
zip_location << path << "/" << timestamp << ".tar.gz";
std::ifstream zip_file(zip_location.str());

if(zip_file){
    // Enters here fine
    request.set_response_content_type("application/x-tar-gz");
    request.add_response_header(new http_header_fields::cache_control_no_cache);
    request.out() << zip_file;
    return true;
}
...

但是,我得到的响应只是一个编码字符串:MHg3ZjRmYTk5Y2RhYjA=,但我希望浏览器下载zip文件。

值得注意的是我使用的是较旧版本的猫鼬,我似乎无法在examples中找到任何解决方案。

1 个答案:

答案 0 :(得分:0)

事实证明,确实在 var mywindow = window.open('', 'PRINT', 'height=5100,width=1086'); mywindow.document.write('<html><head><title>' + document.title + '</title>'); mywindow.document.write('<link rel="stylesheet" href="App_Themes/Basic/Share/Workflow.css" type="text/css" />'); mywindow.document.write('</head><body >'); mywindow.document.write("SomeData"); mywindow.document.close(); // necessary for IE >= 10 mywindow.focus(); // necessary for IE >= 10*/ setTimeout(function(){ mywindow.print(); mywindow.close();}, 2000);类中实现了一个下载文件的虚函数。您需要做的就是传递与文件路径对应的字符串。

request

希望这很有帮助。