Web API从javascript下载xml文件

blasil64

我尝试使用Web API返回项目列表。

这是我的控制器:

public class RecipesController : ApiController
{
    /// <summary>
    /// Model to get recipes datas
    /// </summary>
    private readonly RecipeModel _recipeModel = new RecipeModel();

    /// <summary>
    /// Gets the recipe by division identifier.
    /// </summary>
    /// <param name="id">The div identifier.</param>
    [ActionName("Division")]
    public Adoria GetRecipeByDivisionId(int id)
    {
        return _recipeModel.GetRecipeByDivisionId(id);
    }
}

目前,这是由使用JavaScript的ASP页面调用的:

function RedirectToReport(){
var url = $("#valSelectedCheckBox").val(); // url of my web api method
location.href = url;
}

它在浏览器上显示xml文件。

我不想在浏览器上显示它,而是下载它。

您对目的有想法吗?

依斋·加拉策

创建此ActionResult(以便可在应用程序的其他位置重用)。我从http://aspnet.codeplex.com/SourceControl/latest#Samples/WebApi/ActionResults/ActionResults/Results/OkFileDownloadResult.cs开始,此站点有许多有用的示例。

public class OkXmlDownloadResult : IHttpActionResult
{
    private readonly ApiController _controller;

    public OkXmlDownloadResult(string xml, string downloadFileName,
        ApiController controller)
    {
        if (xml == null)
        {
            throw new ArgumentNullException("xml");
        }

        if (downloadFileName == null)
        {
            throw new ArgumentNullException("downloadFileName");
        }

        if (controller == null)
        {
            throw new ArgumentNullException("controller");
        }

        Xml = xml;
        ContentType = "application/xml";
        DownloadFileName = downloadFileName;
        _controller = controller;
    }

    public string Xml { get; private set; }

    public string ContentType { get; private set; }

    public string DownloadFileName { get; private set; }

    public HttpRequestMessage Request
    {
        get { return _controller.Request; }
    }

    public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
    {
        return Task.FromResult(Execute());
    }

    private HttpResponseMessage Execute()
    {
        HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
        response.Content = new StringContent(Xml);
        response.Content.Headers.ContentType = MediaTypeHeaderValue.Parse(ContentType);
        response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
        {
            FileName = DownloadFileName
        };
        return response;
    }
}

然后在控制器中使用它(我添加了一种获取XML的简单方法,这取决于您如何生成XML):

public class ValuesController : ApiController
{
    public IHttpActionResult Get()
    {
        User user = new User()
        {
            FirstName = "First",
            LastName = "Last"
        };

        // Alternative 1
        XmlSerializer serializer = new XmlSerializer(typeof(User));

        // Alternative 2
        // DataContractSerializer serializer = new DataContractSerializer(typeof(User));

        StringBuilder builder = new StringBuilder();
        using (StringWriter writer = new StringWriter(builder))
        {
            serializer.Serialize(writer, user);

            // alternative 2
            // serializer.WriteObject(writer, user);
        }

        // create XML from your data.
        return new OkXmlDownloadResult(builder.ToString(), "myfile.xml", this);
    }
}

public class User
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Web API下载锁定文件

来自分类Dev

使用HttpClient下载Web API大文件

来自分类Dev

Web API中文件下载的内容协商

来自分类Dev

使用WEB API模拟文件下载

来自分类Dev

使用HttpClient下载Web API大文件

来自分类Dev

使用closedxml从web api下载excel文件

来自分类Dev

调用WEB API下载excel文件

来自分类Dev

如何使用ASP.net Web API和Javascript下载二进制文件?

来自分类Dev

从Angular JS中的Web API下载csv文件

来自分类Dev

带有Web Api 2的Angular下载csv文件

来自分类Dev

从Web API服务下载pdf文件时出现问题

来自分类Dev

使用Jquery Post使用Web API下载文件

来自分类Dev

为什么Web Api HttpResponseMessage无法下载文件?

来自分类Dev

在.NET Core Web API中下载Excel文件

来自分类Dev

MVC Web Api + Ajax创建和下载Zip文件

来自分类Dev

从Web API服务下载pdf文件时出现问题

来自分类Dev

使用Jquery Post使用Web API下载文件

来自分类Dev

为什么Web Api HttpResponseMessage无法下载文件?

来自分类Dev

使用Play Web API下载文件(异步)

来自分类Dev

Web API 工作簿下载

来自分类Dev

从Web检索XML文件

来自分类Dev

Web API返回XML

来自分类Dev

Web API返回XML

来自分类Dev

Windows Phone 8:如何从Web下载xml文件并将其保存到本地?

来自分类Dev

Windows Phone 8:如何从Web下载xml文件并将其保存到本地?

来自分类Dev

使用电源查询从 Web 服务自动下载多个 xml 文件

来自分类Dev

使用Web视图下载文件

来自分类Dev

使用Excel VBA从Web下载zip文件

来自分类Dev

创建PDF文件以在Java Web中下载