2015-09-22 51 views
0

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

的代码如下

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

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

回答

0

不是我的代码,但尝试这个保存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盘或我的电脑中的其他驱动器”)听起来像可能会改进或重新考虑。

相关问题