2009-04-07 181 views
8

我想知道是否有任何方法使用JavaScript实现浏览器的下载文件提示。使用JavaScript浏览器下载文件提示

我的理由 - 好的用户将上传文件到本地文件服务器,无法从Web服务器访问。换句话说,两者都将在不同的领域!

例如,假设网站托管在www.xyz.com上,但文件将驻留在地址为\\10.10.10.01\Files\file.txt的本地文件服务器上。我如何上传/传输文件到本地文件服务器...使用ActiveX和VBscript! (不要问:-)

因此,我将本地文件路径存储在数据库中,并将该数据绑定到网格。当用户点击该链接时,该文件将在窗口中打开(使用JavaScript)。

问题是某些文件类型,如文本,jpg,pdf等在浏览器窗口中打开。我如何能够使用客户端脚本实现content-typecontent-disposition?这甚至可能吗?

编辑: 本地文件服务器有一个窗口的共享文件夹上的文件保存。

+0

什么样的服务器是你的'本地文件服务器'?一个实际的HTTP/FTP /无论服务器还是你在谈论Windows的共享文件夹(即你的意思是`\\ 10.10.10.01`而不是`// 10.10.10.01`? – Christoph 2009-04-07 19:19:19

+0

它是一个共享文件夹在Windows&实际路径文件将是'\\ 10.10.10.01 \ Files \ file.txt' – aix 2009-04-08 10:26:09

+0

@aix:那么你的运气不好 - 没有办法通过HTTP头发送适当的元信息 – Christoph 2009-04-08 15:48:10

回答

5

“content-disposition:attachment”几乎是强制执行的唯一方法,而且这个必须设置在响应头中。

1

你可以尝试使用一个普通的超链接type="application/octet-stream"。似乎在FF中工作,但IE和Opera忽略该属性。

4

如果该文件在您例如Web服务器上一样,你可以这样做:

window.location.replace(fileUrl); 

..和浏览器会找出与该文件做。这对大多数文件很好,比如.xls,.csv等,但请记住,这不是全面证明,因为用户的MIME处理程序设置将决定如何处理该文件...即,如果它是一个.txt文件,它很可能只是在浏览器中显示,不会被赋予一个“文件下载”对话框。

3

截至2015年8月,向您的代码中添加“下载”属性会启用您要查找的行为,至少在Chrome中。