首页 > 解决方案 > 如何处理来自控制器的下载返回文件结果?MVC

问题描述

我无法在 js 中下载文件结果。我正在将文件结果返回给 js,但不知道如何下载它

简而言之,我将 word 文档从控制器返回到 js,我需要在其中下载它并在 js 中处理它。

我正在调用方法和文件结果的 js 方法正在返回。

vm.establishmentAllRecord = function (page) {
            if (page != undefined) {
                vm.page = page;
            }
            var searchCriteria = {
                From: vm.From,
                To: vm.To,
                Region: vm.SelectedRegion
            }
surveyService.establishmentAllRecord(searchCriteria, (vm.page * vm.pagesize), vm.pagesize, vm.sortBy, vm.sortingDirection).then(function (d) {
                var result = JSON.parse(d.data.data);
                ???
            });

我需要问我如何处理来自控制器的返回文件结果???这个地方和下载

希望您的建议

编辑:

我从控制器返回文件系统是这样的,

 FileResult result1 = PrintSurveyDetailsReport(VisitId); 
return result1; 

result1 contains 'ContentType="application/octet-stream"' , "FileContents" and "FileDownloadName" 

标签: angularjsajaxmodel-view-controllerms-wordfileresult

解决方案


使用以下功能

 var downloadFile = function (data, fileName, contentType) {
    contentType = contentType || "application/octet-stream";
    var blobObject = new Blob([data], {type: contentType});
    try {
        window.navigator.msSaveOrOpenBlob(blobObject, fileName);
    }
    catch (exp) {
        var link = document.createElement('a');
        link.setAttribute('href', URL.createObjectURL(blobObject));
        link.setAttribute('download', fileName);
        document.body.appendChild(link); // Required for FF
        link.click();
        document.body.removeChild(link);
    }
};

推荐阅读