gpt4 book ai didi

c# - api Controller 的文件下载问题

转载 作者:太空狗 更新时间:2023-10-29 18:14:48 24 4
gpt4 key购买 nike

public class DefaultController : Controller
{
// GET: Default
public ActionResult Index()
{
return Download();
}

public FileResult Download()
{
string xmlString = "my test xml data";
string fileName = "test" + ".xml";
return File(Encoding.UTF8.GetBytes(xmlString), "application/xml", fileName);
}
}

我在 asp.net mvc 应用程序中有上面的代码来下载文件。它工作正常,因为我的 Controller 继承给了 Controller。但是,当我将此代码移动到 Webapi Controller 时,它会在返回 File 时抛出错误。经过分析我发现我的webapi中的controller继承了ApiController(system.web.http.api controller)。我发现ApiController中没有File类。是否有任何选项可以在 webapi Controller 中实现下载文件功能?

我在 webapi Controller 中尝试了以下替代代码,但是一旦我调用它就看不到下载文件。

public HttpResponseMessage DownloadConstructedXmlFile()
{
var result = new HttpResponseMessage(HttpStatusCode.OK);
string xmlContent = "My test xml data";
//var serializer = new XmlSerializer(typeof(xmlContent));

var builder = new StringBuilder();
using (var writer = new StringWriter(builder))
{
// serializer.Serialize(writer, xmlContent);
result.Content = new StringContent(xmlContent, Encoding.UTF8, "application/xml");
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = string.Format("test.xml")
};
// return result;
}

return new HttpResponseMessage();
}

PS:我正在尝试使用 angularjs 代码通过 angular.service 调用此 api。这是在单击下载按钮时调用的。 API Controller 代码中的任何示例 Angular 代码或帮助或建议都会有所帮助。

最佳答案

这是一个更简单的例子:

   using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Web.Http;

namespace WebApplication1.Controllers
{
public class ValuesController : ApiController
{
// GET: api/Values
public HttpResponseMessage Get()
{
var xmlString = "<xml><name>Some XML</name></xml>";
var result = Request.CreateResponse(HttpStatusCode.OK);
result.Content = new StringContent(xmlString, Encoding.UTF8, "application/xml");
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = "test.xml"
};

return result;
}
}
}

关于c# - api Controller 的文件下载问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31887729/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com