如何在ASP.NET MVC 4和jquery中使用web api下载文件

19 浏览
0 Comments

如何在ASP.NET MVC 4和jquery中使用web api下载文件

我刚开始使用ASP.NET MVC 4和Web API。\n我想允许用户下载一个文件,这个文件我将在服务器端创建。为了创建文件,我已经找到了以下代码。\n

[ActionName("Export")]
public HttpResponseMessage PostExportData(SomeModel model)
{           
    string csv = _service.GetData(model);
    HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
    result.Content = new StringContent(csv);
    // 实际上,文本文件是一个八位字节流(pdf等)
    result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
    // 我们使用attachment来强制下载
    result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
    result.Content.Headers.ContentDisposition.FileName = "file.csv";
    return result;            
}

\n如何使用jQuery调用这个Web API方法?\n但是我不确定如何使用jQuery调用这个Web API,并使其返回一个文件,并提供“保存/打开”选项,就像下载任何文件时一样。\n请有人帮助我并指导我如何进行调用和下载文件。谢谢。

0
0 Comments

在ASP.NET MVC 4和jquery中使用Web API下载文件的问题出现的原因是想要通过点击链接来实现文件下载,但是没有找到合适的方法。

解决方法是使用以下代码实现文件下载:

首先,在想要使用jquery的视图中,可以使用以下代码:

export

然后,在javascript中,可以使用以下代码:


如果想要使用POST方法,可以使用以下代码:

function UpdateForm(modelObject) {
   if ($('#hidden-form').length < 1)
   {
       $('
').attr({ method: 'POST', id: 'hidden-form', action: '.Action('Export', 'Export')' }).appendTo('body'); } $('#hidden-form').html(''); for(var propertyName in modelObject) { $('').attr({ type: 'hidden', id: propertyName, name: propertyName, value: modelObject[propertyName] }).appendTo('#hidden-form'); } } $('a.export').click(function(e) { e.preventDefault(); var modelObject = { property1 : "property1" }; UpdateForm(modelObject); $('#hidden-form').submit(); });

然后,可以使用js来提交`#hidden-form`,从而触发文件下载。

需要注意的是,为了实现文件下载,需要在名称中去掉`Controller`部分,并且删除`new { property = model.property, property = model.property2 }`,因为这只是一个添加变量的示例。

如果想要使用POST方法,可以参考[http://api.jquery.com/jQuery.post/](http://api.jquery.com/jQuery.post/),并且不需要再添加`new { property = model.property, property = model.property2 }`,只需要使用helper生成的基本URL。此外,还需要创建一个将与请求一起发送的javascript对象。具体实现取决于html和数据的结构。

以上方法可以解决在ASP.NET MVC 4和jquery中使用Web API下载文件的问题。

0