1

我有一个网站,我在其中提供了用于下载/流式传输另一台服务器上的媒体文件的链接。目前我的设置方式类似于以下内容:

download = (req, res) ->
  song_id = req.params.id
  download_url = "http://mediaserver.com/#{song_id}"
  console.log("Returning download from: #{download_url}")
  res.set('Content-Type', 'audio/mpeg')
  res.set('Content-Disposition', 'attachment; filename="download.mp3"')
  request.get(download_url).pipe(res)
  #For some reason, express.js on a response end event emits a finish
  #http://www.samcday.com.au/blog/2011/06/27/listening-for-end-of-response-with-nodeexpress-js/
  res.on "finish", ()->
    console.log("Completed song download")

但是,我正在寻找一种方法,我可以只返回一个 HTTP 响应对象,告诉浏览器从适当的服务器而不是我自己的服务器下载它?(可能仍在更改 HTTP 标头以允许将文件另存为下载)。

这有什么可能吗?

4

2 回答 2

2

只需使用带有位置标头的 301(永久)或 302(临时)重定向。

response.writeHead(302, {
  'Location': 'http://someUrlHere'
});

我不是 Express 用户,但看起来您可以在 Express 中使用res.send(302).

于 2012-12-03T19:58:59.747 回答
0

你能不能简单地提供托管实际文件的服务器的链接,然后浏览器会在点击时下载它们?

例如

<a href="http://www.assets.com/file.mp3">File</a>
于 2012-12-03T20:04:20.283 回答