Javascript URL路径,其中包含一个存在下载问题的Express JS请求参数,而不是相同文本的干净字符串

Javascript URL路径,其中包含一个存在下载问题的Express JS请求参数,而不是相同文本的干净字符串,javascript,node.js,express,window.open,Javascript,Node.js,Express,Window.open,我有一个应用程序,它使用Express.js为静态页面提供服务,也为一些端点提供服务,这些端点处理压缩/保存用户可以下载的文件 在我的常规JS应用程序中,我调用服务器请求zip存档,并同步等待响应: var params = { "save_id": saveID // "test" } var paramsString = jQuery.param(params) var xhttp = new XMLHttpRequest() xhttp.open("POST", "finali

我有一个应用程序,它使用Express.js为静态页面提供服务,也为一些端点提供服务,这些端点处理压缩/保存用户可以下载的文件

在我的常规JS应用程序中,我调用服务器请求zip存档,并同步等待响应:

var params = {
    "save_id": saveID // "test"
}

var paramsString = jQuery.param(params)

var xhttp = new XMLHttpRequest()
xhttp.open("POST", "finaliseSave?" + paramsString, false);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send();

var archivePath = xhttp.response
然后我下载文件:

window.open(archivePath)
在服务器端,如下所示:

app.post("/finaliseSave", function(request, response) {
    var saveID = request.query["save_id"] // "test"

    //... prepare the file for the user to download ...

    //Download path to give to the user
    var downloadPath = "./tmp/" + saveID + ".zip" // "./tmp/test.zip"

    console.log(downloadPath) // "./tmp/test.zip"

    //Return the download path
    response.end(downloadPath);
})
我可以转到我的
/public/tmp/
目录中的文件,看到文件大小为1.1mb——我甚至可以将其复制到我的下载文件夹,解压缩并获取内容

但是,使用
window.open()
行下载的文件要小得多-808kb-当我尝试解压缩它时,我得到一个错误“无法展开(没有这样的文件或目录)”

因此,如果我在服务器上替换此行:

var downloadPath = "./tmp/" + saveID + ".zip" // "./tmp/test.zip"
为此:

var downloadPath = "./tmp/" + "test" + ".zip" // "./tmp/test.zip"
(我也可以将其添加到另一个变量名下,然后在console.log和原始下载路径之间进行相等检查,它告诉我它们相等。)

然后我返回这个
downloadPath
,并调用
window.open()
,它会正确下载文件,并正确解压

这两者似乎有些不同:

var saveID = request.query["save_id"] // "test"
var saveID = "test" // "test"
不知何故,这会影响文件的下载,我不知道为什么