当前位置: 首页 > 知识库问答 >
问题:

res.download(filepath)未提示在客户端上下载[重复]

苏德容
2023-03-14

我正在使用node和react构建一个图像压缩程序。服务器通过res.download(filepath)向客户机发送映像,但在客户机中不会发生。但我在网络和图像附件中得到了200 OK的响应。如何在客户端自动触发下载?

这是我处理图像压缩和下载代码的快速路由器:

app.get('/download/:imageName', async (req,res)=>{
let imageName = req.params.imageName
let path = 'uploads/'+imageName;

//Image compression code
const compressedImage = await imagemin([path], {
    destination: "output",
    plugins: [
      imageminPngquant({
        quality: [0.6, 0.8]
      }),
      imageminMozjpeg(),
      imageminGifsicle({lossy: 70}),
      imageminSvgo({
        plugins: extendDefaultPlugins([
            {name: 'removeViewBox', active: false}
        ])
        })
    ]
  });
  // Here filepath = process.cwd()+"/"+compressedImage[0].destinationPath
  res.download(process.cwd()+"/"+compressedImage[0].destinationPath)
})

下面是我的客户端函数,它发送下载图像的get请求:

  function downloadAnImage(imageLink){
 fetch("/download/"+imageLink)
}

顺便说一下,我没有在客户端处理响应,因为下载应该在得到响应后进行。

但如果在浏览器中键入完整图像URL路径,则会进行下载。然后我想我应该把完整的图像URL发送到客户端,但是我找不到一个地址来获取我的服务器正在运行的主机URL。我知道我的服务器正在运行的URL,但是因为我要托管这个应用程序,所以手动将“localhost:3001”作为主机URL是行不通的,对吗?

共有1个答案

谢财
2023-03-14

我通过更改DownloadAnImage函数来解决它:

 function downloadAnImage(imageLink){
  let link=document.createElement('a');
  link.href = process.env.REACT_APP_PROXY+"/download/"+imageLink
  link.target = "_blank"
  link.download = imageLink;
  link.click();
 }
 类似资料:
  • 客户端弱提示 Tida.toast("Hello World!");

  • 我有一个基本的烧瓶应用程序上传图像文件到服务器,然后在网页上渲染。当多个客户端上传时,在当前的设计中,它们最终覆盖相同的静态资产。当在flask中处理来自多个客户端的上传时,最好的方法是什么?

  • 本文向大家介绍Java下http下载文件客户端和上传文件客户端实例代码,包括了Java下http下载文件客户端和上传文件客户端实例代码的使用技巧和注意事项,需要的朋友参考一下 一、下载客户端代码 上述代码只适合下载小文件,如果下载大文件则会出现  Exception in thread "main" java.lang.OutOfMemoryError: Java heap space 错误,所以

  • 我有一个php脚本,它将文件流式传输到客户端。 当我只需点击下载链接(例如,file.php?=id{file-id})时,下载就开始了,但所有数据都进入RAM。这样做的问题是当用户的RAM已满时,下载就会停止。我说的是AVG。100GB文件。 最快的解决办法是什么?GoogleDrive/OneDrive等如何做到?

  • 我有一个 ASP.NET Core 1.1应用程序设置为使用Https并需要客户端证书: 我正在Linux上运行应用程序。 如果我将Client证书模式更改为“Allow证书”,那么一切正常,但浏览器从不提示输入客户端证书。 设置了“RequireCertificate”后,浏览器仍然没有提示我输入证书,并且在服务器端出现了以下两个异常(都重复了四次),浏览器没有返回任何响应: Microsoft

  • 我是stackoverflow的新手,因此这是我的第一篇文章。请原谅我英语不好。。。我花了几个小时在相关的话题上,但没有一个能满足我的需要。我正在编写一个通讯簿,我希望我的用户能够随时下载pdf联系人列表。一切似乎都很顺利,但实际上客户端从未下载pdf文件,尽管我可以在使用chrome开发者工具的请求中看到它。这是我的密码: 当检查响应时,我得到如下结果: 有没有人好心告诉我出了什么事?