【问题标题】:How to handle download return File Result from controller ? MVC如何处理来自控制器的下载返回文件结果? MVC
【发布时间】:2019-08-22 13:38:54
【问题描述】:

我无法在 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" 

【问题讨论】:

    标签: angularjs ajax model-view-controller ms-word fileresult


    【解决方案1】:

    使用下面的函数

     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);
        }
    };
    

    【讨论】:

    • 我从控制器返回文件系统是这样的,'FileResult result1 = PrintSurveyDetailsReport(VisitId);返回结果1;'并且 result1 包含 'ContentType="application/octet-stream"' 、 "FileContents" 和 "FileDownloadName" 如何在您的方法中使用它?我是 MVC 新手
    • downloadFile(result.FileContents, result.FileDownloadName);
    • @wasif downloadFile函数有3个参数?
    • 它是可选的,并且由于文件中的内容类型是“application/octet-stream”,因此您不需要传递它,因为这是默认值,它有效吗?如果是,请投票并将其标记为正确。谢谢。
    • @wasif 我像 Data.result.FileContents 一样得到它。在角度函数中,我有数据,它向我显示文件内容和文件下载,但出现此错误:无法读取未定义的属性 'FileContents'
    猜你喜欢
    • 2019-04-11
    • 2015-07-29
    • 1970-01-01
    • 2012-10-27
    • 1970-01-01
    • 1970-01-01
    • 2021-07-14
    • 1970-01-01
    • 2017-06-07
    相关资源
    最近更新 更多