使用JavaScript的浏览器下载文件提示

使用JavaScript的浏览器下载文件提示,javascript,file-browser,Javascript,File Browser,我想知道是否有任何方法可以使用JavaScript实现浏览器的下载文件提示 我的理由-well用户将文件上载到无法从Web服务器访问的本地文件服务器。换句话说,两者都将在不同的域上 例如,假设网站托管在www.xyz.com,但文件将驻留在本地文件服务器上,地址类似于\\10.10.10.01\files\file.txt。如何将文件上载/传输到本地文件服务器。。。使用ActiveX和VBscript!(不要问:-) 因此,我将本地文件路径存储在数据库中,并将该数据绑定到网格。当用户单击该链接时

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

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

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

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

问题是某些文件类型,如文本、jpg、pdf等,在浏览器窗口中打开。如何使用客户端脚本实现
内容类型
内容处置
?这可能吗

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

“内容处置:附件”几乎是强制执行此操作的唯一方法,必须在响应头中进行设置。

您可以尝试使用带有
type=“application/octet stream”
的普通超链接。似乎在FF中工作,但IE和Opera忽略该属性。

如果文件托管在web服务器上,如您的示例所示,您可以执行以下操作:

window.location.replace(fileUrl);

。。浏览器将确定如何处理该文件。这适用于大多数文件,如.xls、.csv等,但请记住,这不是完全证明,因为用户的MIME处理程序设置将决定如何处理该文件。。。i、 e.如果它是一个.txt文件,则很可能只显示在浏览器中,而不会出现“文件下载”对话框。

从2015年8月起,将“下载”属性添加到标签中可以启用您正在寻找的行为,至少在Chrome中是这样

如何在客户端设置它?目前我正在使用javascript打开该文件。调用window.open('\\10.10.10.01\Files\file.txt')打开文件。这将在窗口中打开文件。“content disposition:attachment”不是服务器端响应头设置吗?正如问题所说的“这必须在响应头中设置”,您不能在客户端进行设置。根据规范,IE和Opera是正确的。type属性表示“期望从服务器下载”,这样不了解特定内容类型的客户端就可以避免麻烦尝试下载它(对于bot最有用)。真正的内容类型胜过它。在我看来,IE和Opera是错误的:在没有任何其他内容类型信息的情况下(这里就是这种情况),浏览器应该尊重类型attAttribute给出的“提示提示”(HTML规范);请记住,该文件不是通过HTTP发送的,因此没有任何内容类型字段可以胜过属性。我很确定javascript无法做到这一点。请看一下内容配置。如前所述,它必须在响应头中设置,并且不是Javascript实现。您的“本地文件服务器”是什么类型的服务器?一个实际的HTTP/FTP/任何服务器,或者您正在谈论Windows的共享文件夹(即你的意思是
\\10.10.10.01
而不是
//10.10.10.01
?它是windows中的一个共享文件夹&文件的实际路径是“\\10.10.01\Files\file.txt”:\n尝试得很好,但没有运气……不幸的是,Firefox上没有跨源支持,也没有使用Safari、Edge和ie,这一事实使下载属性对我来说毫无用处:/注意,这意味着您可以将其放在地址栏中:
数据:text/csv,a,b,c%0ad,e,f
(这将创建一个包含3列和2行的csv文件下载)。不确定这是否与原始问题一致,但通过谷歌搜索如何创建该提示,我在这里结束了。也许这有助于未来的读者:)