Kur*_*ula 8 c# asp.net-mvc asp.net-web-api angularjs
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);
}
}
Run Code Online (Sandbox Code Playgroud)
我在asp.net mvc应用程序中有上面的代码来下载文件.它工作正常,因为我的控制器继承到Controller.但是,当我将此代码移动到Webapi控制器时,它会在返回File时抛出错误.经过分析,我发现webapi中的控制器继承到ApiController(system.web.http.api控制器).我发现ApiController中没有File类.有没有选项在webapi控制器中实现下载文件功能?
我在webapi控制器中尝试了下面的替代代码,但是一旦我调用它就看不到下载文件.
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();
}
Run Code Online (Sandbox Code Playgroud)
PS:我正在尝试使用angularjs代码通过角度服务调用此api.这是在下载按钮单击时调用的.api控制器代码或建议中的任何示例角度代码或帮助都会有所帮助.
Jon*_*han 11
这是一个更简单的例子:
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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8845 次 |
| 最近记录: |