asp.net 网页上,点下载,弹出“下载文件”对话框,如果迅雷的浏览器监视开着,那么会启动迅雷下载,这个代码怎么写啊?网页和下载的文件不在同一服务器上,必须也能行,要下载的文件格式不限,如何写啊?
回答正确的再加50分!
要考虑网页和文件不在同一服务器上,一楼的方法不行
asp.net 点击“下载”弹出“下载文件”对话框,网页与要下载的文件不在同一服务器上,如何写?
答案:4 悬赏:20 手机版
解决时间 2021-12-21 20:42
- 提问者网友:我没有何以琛的痴心不悔
- 2021-12-21 17:08
最佳答案
- 五星知识达人网友:封刀令
- 2022-01-10 00:01
#region private void FileDownLoad(string filename)<br> /// <summary><br> /// 用户下载文件<br> /// </summary><br> /// <param name="filename">下载文件的路径</param><br> private void FileDownLoad(string filename)<br> {<br> string destFileName = filename;<br> destFileName = Server.MapPath("./") + 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 = "GB2312";<br><br> //添加头信息,为 "文件下载/另存为 "对话框指定默认文件名 <br> Response.AppendHeader("Content-Disposition", "attachment;filename="<br> + HttpUtility.UrlEncode(Path.GetFileName(destFileName),<br> System.Text.Encoding.UTF8));<br> Response.AppendHeader("Content-Length", fi.Length.ToString());<br> Response.ContentType = "text/plain";<br> Response.Filter.Close();<br> Response.WriteFile(destFileName);<br> Response.Flush();<br> Response.End();<br> }<br> else<br> {<br> Response.Write("<script language = javascript>alert('下载出错')</script>");<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>就可以了呀。 不就是一个超链接嘛
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯