加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-15 23:00:14 所属栏目:asp.Net 来源:网络整理
导读:我是新来使用ASP.NET MVC 4与Web Api. 我想允许用户下载一个文件,这个文件我将在服务器端创建.为了创建文件,我已经设法掌握了以下代码 [ActionName("Export")]public HttpResponseMessage PostExportData(SomeModel model){ string csv = _service.GetData(m
我是新来使用ASP.NET MVC 4与Web Api.

我想允许用户下载一个文件,这个文件我将在服务器端创建.为了创建文件,我已经设法掌握了以下代码

[ActionName("Export")]
public HttpResponseMessage PostExportData(SomeModel model)
{           
    string csv = _service.GetData(model);
    HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
    result.Content = new StringContent(csv);
    //a text file is actually an octet-stream (pdf,etc)
    result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
    //we used attachment to force download
    result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
    result.Content.Headers.ContentDisposition.FileName = "file.csv";
    return result;            
}

如何使用JQUERY来呼叫这个WEB API方法?

但是我不知道如何使用jquery调用这个web api,并让它给我一个文件,在你下载任何文件时你通常会得到一个“保存为/打开”选项.

有人可以帮我,指导我如何打电话并下载文件.谢谢.

解决方法

您可以在要使用jquery的视图中执行此操作.我假设控制器的名称是ExportController.您还必须分解模型变量,或者在HttpResponseMessage PostExportData(SomeModel模型)中收集模型,
通过其他方式.

HTML:

<a class="export">export</a>

JavaScript的:

<script>
$('a.export').click(function(e) {
    e.preventDefault();  //stop the browser from following
    window.location.href = '@Url.Action('Export','ExportController',new { property = model.property,property = model.property2 })';
});
</script>

使用POST

function UpdateForm(modelObject) {
   if ($('#hidden-form').length < 1)
   {
       $('<form>').attr({
           method: 'POST',id: 'hidden-form',action: '@Url.Action('Export','Export')'
       }).appendTo('body');
   }
   $('#hidden-form').html('');
   for(var propertyName in modelObject) {
       $('<input>').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发布#隐藏表单,这将触发文件下载

更新:这是一个完整的发布示例,它没有检查打字错误等,以便调试任何小的错误.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读