永发信息网

asp.net 点击“下载”弹出“下载文件”对话框,网页与要下载的文件不在同一服务器上,如何写?

答案:4  悬赏:20  手机版
解决时间 2021-12-21 20:42
  • 提问者网友:我没有何以琛的痴心不悔
  • 2021-12-21 17:08
asp.net 网页上,点下载,弹出“下载文件”对话框,如果迅雷的浏览器监视开着,那么会启动迅雷下载,这个代码怎么写啊?网页和下载的文件不在同一服务器上,必须也能行,要下载的文件格式不限,如何写啊?
回答正确的再加50分!



要考虑网页和文件不在同一服务器上,一楼的方法不行
最佳答案
  • 五星知识达人网友:封刀令
  • 2022-01-10 00:01
#region private void FileDownLoad(string filename)<br>  /// &lt;summary&gt;<br>  /// 用户下载文件<br>  /// &lt;/summary&gt;<br>  /// &lt;param name=&quot;filename&quot;&gt;下载文件的路径&lt;/param&gt;<br>  private void FileDownLoad(string filename)<br>  {<br>  string destFileName = filename;<br>  destFileName = Server.MapPath(&quot;./&quot;) + destFileName;<br>  destFileName = Server.UrlDecode(destFileName);<br><br>  if (File.Exists(destFileName))<br>  {<br>  FileInfo fi = new FileInfo(filename);<br>  Response.Clear();<br>  Response.ClearHeaders();<br>  Response.Buffer = true;<br>  Response.Charset = &quot;GB2312&quot;;<br><br>  //添加头信息,为 &quot;文件下载/另存为 &quot;对话框指定默认文件名  <br>  Response.AppendHeader(&quot;Content-Disposition&quot;, &quot;attachment;filename=&quot;<br>  + HttpUtility.UrlEncode(Path.GetFileName(destFileName),<br>  System.Text.Encoding.UTF8));<br>  Response.AppendHeader(&quot;Content-Length&quot;, fi.Length.ToString());<br>  Response.ContentType = &quot;text/plain&quot;;<br>  Response.Filter.Close();<br>  Response.WriteFile(destFileName);<br>  Response.Flush();<br>  Response.End();<br>  }<br>  else<br>  {<br>  Response.Write(&quot;&lt;script language = javascript&gt;alert('下载出错')&lt;/script&gt;&quot;);<br>  }<br>  }<br>  #endregion
全部回答
  • 1楼网友:行路难
  • 2022-01-10 02:24
以下是我自己的一个公共方法,请参考。 首先要添加命名空间引用 using system.io; filename是自定义要下载的文件的名称 filepath是文件的实际存放路径     public static void downloadfile(string filename, string filepath)     {         filestream fs = new filestream(filepath, filemode.open, fileaccess.read, fileshare.read);         byte[] buffer = new byte[fs.length];         int totallength = (int)fs.length;         int totalreadlength = 0;         while (totallength > 0)         {             int readlength = fs.read(buffer, totalreadlength, math.min(totallength, int.maxvalue));             if (readlength == 0)             {                 break;             }             totalreadlength += readlength;             totallength -= readlength;         }         fs.close();         httpcontext.current.response.charset = "utf-8";         httpcontext.current.response.addheader("content-disposition", string.format("attachment; filename=" + filename));         httpcontext.current.response.binarywrite(buffer);         httpcontext.current.response.outputstream.flush();         httpcontext.current.response.end();     }
  • 2楼网友:英雄的欲望
  • 2022-01-10 02:09
只要能访问到那个远程文件就行,然后赋值给<a>就可以了呀。 不就是一个超链接嘛
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯