2017-08-24 15 views
1

私はbrightsignユニットにzipファイルをアップロードし、zipファイルを送信するためのput要求をすることができる残りのAPIを作成することができるようにする必要があります。明示的にnodejsの単純なput要求

しかし、私が見つけたすべての例は、expressのようなフレームワークを使用しているということです。 余分なフレームワークを使用せずにnodejsのPUT要求を処理する残りのAPIを作ることは可能ですか?

問題は、brightsignプレーヤーに「設定」ステップが不要なモジュールのみを使用できることです。だから私は単純なjavascriptだけを含むモジュールを使用することができます(私の説明が意味をなさないことを望みます)。あなたが何らかの形でPUTをリッスンする必要があります

+0

expressを使用すると何が問題になるのですか? – EMX

+0

私はそれをBrightsignプレイヤーで実行できる必要があります。モジュールのインストール時に「構成」ステップを必要としないモジュールのみをサポートします。私が理解しているように、一部のモジュールは、ターゲットマシン用のモジュールを構成するステップを実行する必要があります。 BrightSignプレーヤーは、そのような種類のモジュールを使用することはできません。 – user1716970

答えて

1

バニラ(NodeJS HTTP API

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を使用してそれをテストすることができます

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

ははるかに簡単です。明示的な例が必要な場合は

+0

ありがとうございます。たぶん私はダムですが、本文を印刷するときにはリクエスト文字列しか取得できません。私は、ファイルのデータが何とかリクエストに含まれると考えていました。 curlコマンドがファイルを送信していますか? – user1716970

+1

はい、これは簡単な例ですが、 '-d fileData = base64string'を置き換えて、** base64string **を実際のbase64文字列に変更してから、サーバーにいくつかのロジックを追加して、例えば、mimeの型とサイズをチェックし、すべてがOKならば、 'destPath'と' fileName'を使ってファイルとして保存し、ファイルを格納する場所と名前を指定します。 (あなたが使用しているパラメータが不足しているため、クライアントの要求が正しくフォーマットされていないために予期しないクラッシュが発生するのを避けるため、 – EMX

関連する問題