本文介绍了如何在 ASP.NET Web API 中设置下载文件名的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在我的 ApiController 类中,我有以下方法来下载服务器创建的文件.
In my ApiController class, I have following method to download a file created by server.
public HttpResponseMessage Get(int id)
{
try
{
string dir = HttpContext.Current.Server.MapPath("~"); //location of the template file
Stream file = new MemoryStream();
Stream result = _service.GetMyForm(id, dir, file);
if (result == null)
{
return Request.CreateResponse(HttpStatusCode.NotFound);
}
result.Position = 0;
HttpResponseMessage response = new HttpResponseMessage();
response.StatusCode = HttpStatusCode.OK;
response.Content = new StreamContent(result);
return response;
}
catch (IOException)
{
return Request.CreateResponse(HttpStatusCode.InternalServerError);
}
}
除了默认的下载文件名是它的 id 外,一切都运行得很完美,所以用户可能每次都必须在另存为对话框中输入他/她自己的文件名.有没有办法在上面的代码中设置默认文件名?
Everything is working perfect except that default downloading file name is its id so user might have to type his/her own file name at save as dialog each time. Is there any way to set a default file name in the code above?
推荐答案
您需要在 HttpResponseMessage
上设置 Content-Disposition
标头:
You need to set the Content-Disposition
header on the HttpResponseMessage
:
HttpResponseMessage response = new HttpResponseMessage();
response.StatusCode = HttpStatusCode.OK;
response.Content = new StreamContent(result);
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = "foo.txt"
};
这篇关于如何在 ASP.NET Web API 中设置下载文件名的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!