强制浏览器将下载的文件保存在特定位置

Force the browser to save downloaded file in a specific location

我的项目是一个 Asp.Net MVC4 网络应用程序。

目前有生成文本文件发送到客户端浏览器下载的方法

我需要修改它以强制浏览器将文件保存在客户端计算机上的自定义(预定义)位置。

这是不可能的,因为它会引入严重的安全问题。用户必须决定文件的保存位置。

您只能在您有权访问的服务器上指定一个位置。

如果它是内部站点,那么您可以设置服务器以将文件保存到网络位置,并return该路径给用户..

如果您想显示另存为,请将此添加到您的 ActionResult 以指示文件下载:

Response.SetCookie(new HttpCookie("fileDownload", "true") { Path = "/" });
return myFileStreamResult

您的网络应用程序只能向您的客户端发送文件。无法强制下载并保存到特定位置,因为下载和保存权限属于客户端浏览器。

如果用户没有定义默认下载位置,下载东西时会提示保存到,如果用户已经定义了默认下载位置。它将自动下载并保存到默认位置。

所以我认为你对你的网络逻辑有点误解:D

我需要下载文件并将其分类到客户端计算机上严格定义的目录结构中,以免出现用户错误。理想情况下,它将是完全自动的。我无法让它完全自动,但在 Chrome in Windows 中,我消除了输入错误的可能性:

<a class="aDownload" href="file.txt" download="CTRL+V for suggested path/file">Download</a>
<textarea id="textareaClipboard"></textarea>

使用 jQuery 监听 link 的点击,我调用一个函数来生成所需的路径和最终文件名,将其放入文本区域,并将其传输到剪贴板使用

jQuery('#textareaClipboard').select();
document.execCommand('copy' ,null ,null);

“另存为”对话框弹出,文件名字段中显示 "CTRL+V for suggested path/file"。按照建议将生成的文件名粘贴到此字段中,然后按 Enter。

它需要最少的用户操作来确保文件以正确的名称进入正确的目录,并且用户可以随时拒绝该建议。