2017-08-24 48 views
1

我需要能夠上傳一個zip文件到brightsign單元,並想創建一個休息API,我可以發出一個請求發送zip文件。簡單的對nodejs的請求沒有明文

但問題是我找到的所有例子都是使用express等框架。 是否有可能在沒有使用額外框架的情況下在nodejs中處理PUT請求的其餘API?

問題是我只能使用brightsign播放器上不需要「配置」步驟的模塊。所以我可以使用只包含普通JavaScript的模塊(我希望我的解釋很有意義)。

+0

什麼是使用快遞的問題,你介意延長嗎? – EMX

+0

我需要能夠在Brightsign播放器上運行它。它僅支持模塊安裝時不需要「配置」步驟的模塊。據我瞭解,一些模塊需要運行一個步驟,爲目標機器配置模塊。 BrightSign播放器不能使用這些模塊。 – user1716970

回答

1

香草(NodeJS HTTP API

您將需要監聽PUT莫名其妙:

const http = require('http'); 
const querystring = require('querystring'); 
const server = http.createServer().listen(3000); 

server.on('request', function (req, res) { 
    if (req.method == 'PUT') { //PUT Only 
     var body = ''; 
     req.on('data', function (data){body += data;}); 
     req.on('end', function() { 
      var PUT = querystring.parse(body); 
      console.log(PUT); 
      res.writeHead(200, {'Content-Type': 'text/plain'}) 
      res.write('\n[request received successfully]\n'); res.end(); 
     }); 
    }else{res.end();} 
}); 

可以使用curl測試出來:

curl -X PUT -d destPath=/home/usr/images -d fileName=selfie.png -d fileData=base64string localhost:3000 

快遞簡單得多,commen t如果你需要一個快速的例子

+0

謝謝你的例子。也許我很笨,但是當打印正文時,我只能得到請求字符串。我在想,該文件的數據會以某種方式在請求中。 curl命令是否發送文件? – user1716970

+1

是的,但是這是一個簡單的例子,你必須替換'-d fileData = base64string',改變** base64string **爲一個實際的base64字符串,然後在服務器中添加一些邏輯來操作傳入的base64查詢字符串,例如:檢查MIME類型,大小,如果一切正常,然後使用'destPath'和'fileName'作爲文件存儲以指定存儲文件的位置和名稱。 (我建議檢查一切是否與這些參數一致,以避免由於格式錯誤的客戶端請求而導致意外崩潰[缺少您正在使用的參數]) – EMX