string FileUlr = Server.MapPath(
"~/images/test/");
//获取文件所在目录
其实该方法的最核心东西就是在 Response.AppendHeader("Content-dispostion","attachment,filename="+DownloadFileName);
这块 ,Content-dispostion是mime协议的扩展,mime协议指示mime用户代理如何显示附加的文件。当Internet Explorer 接收到头时,他会激活文件下载对话框,他的文件明框自动填充了头中指定的文件名。这是设计导致的;无法使用此功能将文档保存到用户的计算机上,而不向用户问询保存位置。当然这种情况在ie9中已不存在了,ie9会自动的保存在一开始设定好的文件夹下。ie9默认的文件保存位置为user/DownLoad文件夹下。
到这里,整个下载重命名就做好了。欢迎提取不同的意见。
FileUlr +=
"5.jpg";/
/获取现有文件所在位置
string OutFileName =
"NewFileName";
if (
File.Exists(FileUlr))
//判断该文件是否存在
{
FileInfo fi =
new
FileInfo(FileUlr);
Response.Clear();
Response.ClearHeaders();
Response.Buffer =
false;
string tempfile =
Path.GetFileName(FileUlr);//获取文件名称
tempfile = OutFileName + tempfile.Substring(tempfile.LastIndexOf("."));
Response.Clear();
Response.ClearHeaders();
Response.Buffer = false;
// 这一步调试时中文文件名也是正常。
string DownloadFileName = null;
string browser =
this.Context.Request.UserAgent.ToUpper();
if (browser.Contains
("MS") ==
true && browser.Contains
("IE") ==
true)
//判断当前用户使用的浏览器类型
{
DownloadFileName = HttpUtility.UrlEncode(tempfile);
// 这一步调试时中文文件名也是正常。在ie中中文显示正常,但在firefox中,中文依然为
//乱码,所以这里要判断用户使用浏览器类型,来保持中文文件名的正常显示
}
else if (browser.Contains("FIREFOX") == true)
{
DownloadFileName = "\"" + tempfile + "\"";
}
else
{
DownloadFileName = HttpUtility.UrlEncode(tempfile);
// 这一步弹出下载保存的对话框,出现文件名乱码,但变量中的文件名是正常的。
}
Response.AppendHeader(
"Content-Disposition", "attachment;filename=" + DownloadFileName);
//为用户保存文件是显示的名称
Response.AppendHeader(
"Content-Length", fi.Length.ToString());
Response.ContentType =
"application/octet-stream";
Response.WriteFile(FileUlr);
//用response来返回文件的路径
Response.Flush();
//清空response
Response.End();
}
else
{
Response.Write
("<script langauge=javascript>alert(‘文件不存在!’);</script>");
Response.End();
}
其实该方法的最核心东西就是在 Response.AppendHeader("Content-dispostion","attachment,filename="+DownloadFileName);
这块 ,Content-dispostion是mime协议的扩展,mime协议指示mime用户代理如何显示附加的文件。当Internet Explorer 接收到头时,他会激活文件下载对话框,他的文件明框自动填充了头中指定的文件名。这是设计导致的;无法使用此功能将文档保存到用户的计算机上,而不向用户问询保存位置。当然这种情况在ie9中已不存在了,ie9会自动的保存在一开始设定好的文件夹下。ie9默认的文件保存位置为user/DownLoad文件夹下。
到这里,整个下载重命名就做好了。欢迎提取不同的意见。