[英]Unable to download the file from Node.js using the POST request
我發現了一些與此相關的問題,但答案對我不起作用,所以在這里發布相同的答案。
我有一些 XML 內容,這些內容以編程方式創建並顯示在 Textarea 中。 我需要一個選項來將其導出或下載到本地系統。 所以我使用POST
請求將這些數據發送到NODE.JS
,我在其中創建我的XML
文件並嘗試下載它。 我知道如果我使用GET
它會直接工作但是使用POST
它會失敗。 有什么辦法可以做到這一點?
這是我的代碼:
Angularjs POST 請求:單擊時我有一個按鈕我將所有 XML 數據傳遞到我的 NODE.js function:
$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, status, headers, config) {
console.log('ERROR: could not download file');
console.log(error)
});
}
我的 Node.js function 將使用以下數據創建 XML 文件:
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 的成功 function 中看到的那樣,我嘗試了幾件事,但都沒有奏效。 我嘗試使用callback(FilePath);
然后我嘗試使用$window.open(data);
下載文件但我收到以下錯誤Not allowed to load local resource:
。
有人可以幫我嗎?
經過一番搜索后,我能夠做到。 我沒有使用 POST 將數據發送到 NODE.JS,而是嘗試在我的 AngularjS function 中創建文件並從那里自行下載。 如果萬一有人在這里尋找解決方案,那就是:
//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, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
a.dispatchEvent(e);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.