问题描述
我发现了一些与此相关的问题,但答案对我而言不起作用,因此在此处发布相同的问题。
我有一些XML内容已通过编程方式创建并显示在Textarea中。我需要一个选项来将其导出或下载到本地系统。因此,我正在使用POST
请求将这些数据发送到NODE.JS
,在其中创建我的XML
文件并尝试下载它。我知道如果我使用GET
可以直接工作,但是使用POST
则失败。有办法吗?
这是我的代码:
Angularjs POST请求: 单击时有一个按钮,我会将所有XML数据传递给我的NODE.js函数:
$scope.ExportXML = function(XMLContent){
var XMLContent = XMLContent;
$http({
url : "/ExportData",method : "POST",data : XMLContent
}).success(function(data,status,headers,config) {
console.log(data);
console.log("Data Exported");
window.location.assign(data);
$window.open(data);
}).error(function(error,config) {
console.log('ERROR: Could not download file');
console.log(error)
});
}
const fs = require('fs');
const path = require('path');
const reqPath = path.join(__dirname,'../');
exports.exportfile = function(req,res)
{
var ContentData = req.body;
var FileName = "XMLDATA.xml";
fs.appendFile(FileName,ContentData,function (err)
{
const FilePath = reqPath+FileName;
res.download(FilePath);
})
}
从ANGULARJS的成功功能可以看出,我尝试了几件事,但没有任何效果。我尝试使用callback(FilePath);
发送回文件的路径,然后尝试使用$window.open(data);
下载文件,但是出现以下错误Not allowed to load local resource:
。
有人可以帮我吗?
解决方法
经过一番搜索,我能够做到。我没有使用POST将数据发送到NODE.JS,而是尝试在AngularjS函数中创建文件并从那里下载文件。如果万一有人在这里寻找解决方案,那就是:
//Export the contents of XML to text file
$scope.ExportXML = function(XMLContent){
var filename = 'HelloWorld.xml'
var blob = new Blob([XMLContent],{type: "text/xml"});
if (window.navigator && window.navigator.msSaveOrOpenBlob)
{
window.navigator.msSaveOrOpenBlob(blob,filename);
}
else
{
var e = document.createEvent('MouseEvents'),a = document.createElement('a');
a.download = filename;
a.href = window.URL.createObjectURL(blob);
a.dataset.downloadurl = ['text/json',a.download,a.href].join(':');
e.initEvent('click',true,false,window,null);
a.dispatchEvent(e);
}
}