簡體   English   中英

無法使用 POST 請求從 Node.js 下載文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM