创建文件服务器上文件的下载链接
我正在寻找一种方法(轻松,优先;))创建一个单独的文件服务器上的文件的下载链接。
情况如下:我正在开发的应用程序(vb.net中的asp.net 2.0,但我在c#中有类似的问题,无论哪种解决方案适用于我)都将在公司内部运行。 按照良好做法,文件存储和Web应用程序位于两个单独的服务器上。
我基本上需要能够创建一个文件的下载链接,我必须访问该文件的唯一可用URL是 servername folder1 folder2 folder3 file.txt (可以是任何类型的文件)
Weblinks根本不起作用。 这是它目前的设置方式:
tablerowfield.Text = String.Format( "Click me", filename)
由于显而易见的原因,这不起作用。 它曾经被设置为将该文件写入应用程序路径本身并且完美地工作,但这不是好习惯,这就是我改变它(或尝试)的原因。
我阅读了有关创建下载页面的解决方案,然后在数据库中有一个表,其中包含链接并返回适当的Web URL以供下载,但不幸的是,我面临的时间限制不允许我开发它。
假设我可以像上面那样为文件提供一个包含完整文件路径的字符串,那么创建链接的最简单方法是什么?单击时,下载文档?
注意:我在此环境中拥有0个管理员权限。 那真的没有帮助我。 让我们假设我得到了如上所述的正确链接,并拥有相应的文件访问权限等。
更新:
上面的示例适用于IE,但不适用于Firefox和Chrome。 IE将其转换为文件:// servername / …链接,它可以实现预期,但FF和Chrome都主动决定这是不安全的,并已从浏览器中禁用它。
您可以使用ASHX文件(例如,https://stackoverflow.com/questions/7725599/creating-download-link-to-a-file-on-a-file-server/downloadfile.ashx)并使用以下代码(未经过测试,但它会是类似的):
Response.Clear(); Response.ContentType = "application/octet-stream"; Response.AddHeader("Content-Disposition", "attachment; filename=abc.txt"); Response.WriteFile(Server.MapPath("\servernamefolder1folder2folder3abc.txt")); Response.End();
然后在你的锚标签中使用它,如:
Click me
注意:您还可以传递用于下载不同文件的参数,例如:
Click me
然后,在ashx文件中,使用文件名下载相应的文件。
这段代码将在下载文件夹中创建一个文件,其名称为= hi.txt,内容为“感谢上帝,最后文件已下载”。
Response.Clear(); Response.ContentType = "application/octet-stream"; Response.AddHeader("Content-Disposition", "attachment; filename=hi.txt"); Response.Write("thanks god, finally file got downloaded."); Response.End();
如果您的文件已经存在于服务器上,那么您可以在下载按钮单击事件中使用此代码
protected void downloadpdf_Click(object sender, EventArgs e) { Response.Clear(); Response.ContentType = "application/octet-stream"; Response.AddHeader("Content-Disposition", "attachment; filename=""downloadName.pdf"""); Response.WriteFile(Server.MapPath(@"~/path of pdf/actualfile.pdf")); Response.End(); }
\servernamefolder1folder2folder3...
是一个无法在浏览器中使用的UNC路径。 由于文件位于单独的服务器上,因此需要格式为https://server-name/folder1/folder2/file.txt
的href属性。
如果客户端无法解析服务器名称,则需要首先获取服务器的IP地址,然后制定表单的href: https://10.1.1.30/folder1/folder2/file.txt
: https://10.1.1.30/folder1/folder2/file.txt
以下是从server-name获取IP地址的方法:
IPAddress[] host; host = Dns.GetHostAddresses("server-name"); string ip = host[0].ToString();
编辑:
我基本上需要能够创建一个文件的下载链接
使用ashx解决方案,您的应用程序将从服务器读取文件并将其中继到客户端,而不仅仅是为客户端提供直接从文件服务器下载文件的链接。
上述就是C#学习教程:创建文件服务器上文件的下载链接分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1030478.html