【问题标题】:Download a file which does not exists in project directory in AngularJS下载AngularJS项目目录中不存在的文件
【发布时间】:2015-09-23 04:25:12
【问题描述】:

在我的项目中,我只想实现上传和下载功能。我已经使用 AngularJS 和 Node.js 完成了上传功能。但这里的问题是将文件(.pdf,所有图像格式)上传到系统中的某个位置。例如,我的项目位于 D 盘。尽管我必须将文件上传到计算机中的 C 驱动器或其他驱动器中,但我已经成功完成了。但是当我尝试从 Node.js 读取文件位置并将路径传递给 angular 时,一切正常,文件已下载到浏览器中。当我尝试打开下载的文件时,它会发回响应 - 致命错误/没有可显示的内容。仅当我发送文件流而不是 Angular 的路径时,我才尝试使用 blob。

代码如下

       var file = new Blob([data], {type: 'application/pdf'});
       var fileURL = URL.createObjectURL(file);
       window.open(fileURL);

其中数据是来自服务器的文件流响应。

【问题讨论】:

    标签: angularjs


    【解决方案1】:

    不是我的代码,但试试这个来保存一个 BLOB:

    var saveData = (function () {
        var a = document.createElement("a");
        document.body.appendChild(a);
        a.style = "display: none";
        return function (data, fileName) {
            var json = JSON.stringify(data),
                blob = new Blob([json], {type: "octet/stream"}),
                url = window.URL.createObjectURL(blob);
            a.href = url;
            a.download = fileName;
            a.click();
            window.URL.revokeObjectURL(url);
        };
    }());
    
    var data = { x: 42, s: "hello, world", d: new Date() },
        fileName = "my-download.json";
    
    saveData(data, fileName);
    

    来源:http://jsfiddle.net/koldev/cw7w5/

    如果您想强制下载链接文件,您可以使用 HTML5 a 选项 download <a download="filename_for_download" href="path/to/the/file"> Clicking o will force a download</a> 更多信息:https://developers.google.com/web/updates/2011/08/Downloading-resources-in-HTML5-a-download?hl=en 牢记(不存在)对旧浏览器的支持

    注意:您的上传过程(“将文件上传到 C 驱动器或我计算机中的其他驱动器”)听起来可能需要改进或重新考虑。

    【讨论】:

      猜你喜欢
      • 2016-02-02
      • 2018-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-26
      • 1970-01-01
      相关资源
      最近更新 更多