Pra*_*hav 2 asp.net string httpresponse response.transmitfile
在C#ASP.Net网站中,要将文件传输到我正在使用的客户端
Stirng file_path=Server.MapPath("~/files/"+file_name);
HttpContext.Current.Response.ContentType = "application/octet-stream";
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + file_Name);
HttpContext.Current.Response.TransmitFile(file_path);
HttpContext.Current.Response.End();
Run Code Online (Sandbox Code Playgroud)
它工作正常,但是当文件名包含任何空格时,下载的文件只有第一个单词的名称.例如:如果我的文件名是"This is demo.txt",则下载的文件名将变为"This"而没有扩展名.因此,下载它的用户无法识别其类型.
我们怎样才能避免因包含空格的文件名而发生?
我试过用
Stirng file_path="'"+Server.MapPath("~/files/"+file_name)+"'";
Run Code Online (Sandbox Code Playgroud)
但没有工作.
编辑:
我也不能替换(用'_'或' - ')或删除服务器上存在的文件名中的所有空格.非常感谢一点帮助.
您应该将文件名括在引号中.
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=\"" + file_Name + "\"");
Run Code Online (Sandbox Code Playgroud)
如果你使用VS2015或更高版本,你可以使字符串插值更整洁:
HttpContext.Current.Response.AddHeader("Content-Disposition", $"attachment;filename=\"{file_Name}\"");
Run Code Online (Sandbox Code Playgroud)
此外,标题中的文件名不必与文件名相同.标题中的文件名仅是对用户的建议.
有关完整的详细信息,请参阅RFC 6266 "在超文本传输协议(HTTP)中使用内容处置标头字段",尤其是关于哪些字符可能导致文件名出现问题.
归档时间: |
|
查看次数: |
2724 次 |
最近记录: |