河南工考网,宾至如归,谌利军
一、//transmitfile实现下载
*/
string filename = "asd.txt";//客户端保存的文件名
string filepath = server.mappath("download/aaa.txt");//路径
fileinfo fileinfo = new fileinfo(filepath);
response.clear();
response.clearcontent();
response.clearheaders();
response.addheader("content-disposition", "attachment;filename=" + filename);
response.addheader("content-length", fileinfo.length.tostring());
response.addheader("content-transfer-encoding", "binary");
response.contenttype = "application/octet-stream";
response.contentencoding = system.text.encoding.getencoding("gb2312");
response.writefile(fileinfo.fullname);
response.flush();
response.end();
}
system.io.fileinfo fileinfo = new system.io.fileinfo(filepath);
if (fileinfo.exists == true)
{
const long chunksize = 102400;//100k 每次读取文件,只读取100k,这样可以缓解服务器的压力
byte[] buffer = new byte[chunksize];
response.clear();
system.io.filestream istream = system.io.file.openread(filepath);
long datalengthtoread = istream.length;//获取下载的文件总大小
response.contenttype = "application/octet-stream";
response.addheader("content-disposition", "attachment; filename=" + httputility.urlencode(filename));
while (datalengthtoread > 0 && response.isclientconnected)
{
int lengthread = istream.read(buffer, 0, convert.toint32(chunksize));//读取的大小
response.outputstream.write(buffer, 0, lengthread);
response.flush();
datalengthtoread = datalengthtoread - lengthread;
}
response.close();
}
}
//以字符流的形式下载文件
filestream fs = new filestream(filepath, filemode.open);
byte[] bytes = new byte[(int)fs.length];
fs.read(bytes, 0, bytes.length);
fs.close();
response.contenttype = "application/octet-stream";
//通知浏览器下载文件而不是打开
response.addheader("content-disposition", "attachment; filename=" + httputility.urlencode(filename, system.text.encoding.utf8));
response.binarywrite(bytes);
response.flush();
response.end();
}
//----------------------------------------------------------
public void downloadfile( system.web.ui.page webform,string filenamewhenuserdownload ,string filebody )
{
webform.response.clearheaders();
webform.response.clear();
webform.response.expires = 0;
webform.response.buffer = true;
webform.response.addheader("accept-language", "zh-tw");
//'文件名称
webform.response.addheader("content-disposition", "attachment; filename='"+system.web.httputility.urlencode(filenamewhenuserdownload, system.text.encoding.utf8)+"'");
webform.response.contenttype = "application/octet-stream";
//'文件内容
webform.response.write(filebody);//-----------
webform.response.end();
}
//上面这段代码是下载一个动态产生的文本文件,若这个文件已经存在于服务器端的实体路径,则可以通过下面的函数:
public void downloadfilebyfilepath( system.web.ui.page webform,string filenamewhenuserdownload ,string filepath )
{
webform.response.clearheaders();
webform.response.clear();
webform.response.expires = 0;
webform.response.buffer = true;
webform.response.addheader("accept-language", "zh-tw");
//文件名称
webform.response.addheader("content-disposition", "attachment; filename='" + system.web.httputility.urlencode(filenamewhenuserdownload, system.text.encoding.utf8) +"'" );
webform.response.contenttype = "application/octet-stream";
//文件内容
webform.response.write(system.io.file.rea}dallbytes(filepath));//---------
webform.response.end();
}
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Net Core Web Api项目与在NginX下发布的方法
asp.net core3.1 引用的元包dll版本兼容性问题解决方案
IdentityServer4实现.Net Core API接口权限认证(快速入门)
ASP.NET Core MVC通过IViewLocationExpander扩展视图搜索路径的实现
网友评论