Fla*_*ter 10 c# vb.net asp.net file download
我正在寻找一种方法(轻松,优先;))创建一个单独的文件服务器上的文件的下载链接.
情况如下:我正在开发的应用程序(vb.net中的asp.net 2.0,但我在c#中有类似的问题,无论哪种解决方案适用于我)都将在公司内部运行.好的做法是,文件存储和Web应用程序位于两个单独的服务器上.
我基本上需要能够创建一个文件的下载链接,我必须访问该文件的唯一可用URL是\ servername\folder1\folder2\folder3\file.txt(可以是任何类型的文件)
Weblinks根本不起作用.这是它目前的设置方式:
tablerowfield.Text = String.Format(
"<a href=""\\servername\folder1\folder2\folder3\{0}""
target=""_blank"">Click me</a>",
filename)
Run Code Online (Sandbox Code Playgroud)
由于显而易见的原因,这不起作用.它曾经被设置为将该文件写入应用程序路径本身并且完美地工作,但这不是好的做法,这就是我改变它(或尝试)的原因.
我阅读了有关创建下载页面的解决方案,然后在数据库中有一个表格,其中包含链接并返回适当的Web URL以供下载,但遗憾的是我面临的时间限制不允许我开发它.
假设我可以像上面那样为文件提供一个包含完整文件路径的字符串,那么创建链接的最简单方法是什么?单击时,下载文档?
注意:我在此环境中拥有0个管理员权限.这真的没有帮助我.让我们假设我得到了如上所述的正确链接,并拥有相应的文件访问权限等.
更新:
以上示例适用于IE,但不适用于Firefox和Chrome.IE将其转换为file:// servername/...链接,它可以实现预期,但FF和Chrome都主动决定这是不安全的,并已从浏览器中禁用它.
was*_*lli 19
您可以使用ASHX文件(例如,downloadfile.ashx)并使用以下代码(未经过测试,但它会是类似的):
Response.Clear();
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment; filename=abc.txt");
Response.WriteFile(Server.MapPath("\\servername\folder1\folder2\folder3\abc.txt"));
Response.End();
Run Code Online (Sandbox Code Playgroud)
然后在你的锚标签中使用它,如:
<a href="downloadfile.ashx" target=""_blank"">Click me</a>
Run Code Online (Sandbox Code Playgroud)
注意:您还可以传递用于下载不同文件的参数,例如:
<a href="downloadfile.ashx?file=abc.txt" target=""_blank"">Click me</a>
Run Code Online (Sandbox Code Playgroud)
然后,在ashx文件中,使用文件名下载相应的文件.