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 для загрузки файла. Он отлично работал, поскольку мой контроллер унаследован контроллеру. Но когда я перемещаю этот код на контроллер Webapi, он выдает ошибку при возврате Файл. После анализа я обнаружил, что мой контроллер в webapi наследует ApiController (контроллер system.web.http.api). Я обнаружил, что в ApiController нет класса File. Есть ли возможность реализовать функцию загрузки файлов в контроллере webapi?Ошибка загрузки файла с помощью контроллера api
Я попробовал следующий альтернативный код в контроллере 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();
}
PS: Я пытаюсь использовать angularjs код для вызова этого апи через угловой service.This вызывается на кнопку загрузки мыши. Любой примерный угловой код или помощь в коде контроллера или предложениях api будут полезны.
http://stackoverflow.com/questions/9541351/returning-binary-file-from-controller-in-asp-net-web-api –