Проблема загрузки файла с контроллером API
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?
Я попробовал приведенный ниже альтернативный код в контроллере 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 для вызова этого API через службу angular. Это вызывается при нажатии кнопки загрузки. Любой пример углового кода или помощь в коде контроллера API или предложения будут полезны.