NIFCLOUD-mbaas / UserCommunity

ニフクラ mobile backend ユーザーコミュニティ
https://mbaas.nifcloud.com/
81 stars 18 forks source link

【過去質問】スクリプト機能でファイルをリクエストボディに渡す方法について #1341

Open ncmbsupport opened 1 year ago

ncmbsupport commented 1 year ago

スクリプト機能を利用していますが、アプリからスクリプトを実行する際にリクエストボディにアップロードファイルのバイナリを指定できますか。また、実行する側のスクリプト(node.jsを想定)でどのように受け取るのかについても教えて下さい。

ncmbsupport commented 1 year ago

お問い合わせいただいた件について回答いたします。

アプリからスクリプトを実行する際にリクエストボディにアップロードファイ ルのバイナリを指定できますか。

お問い合わせ頂いた事項について弊社で検証し、バイナリを指定出来る事を確認いたしました。 以下に検証に使用したコードを記載いたします。

const fs = require('fs');
let binary_file = fs.readFileSync("test_file.bin");
var NCMB = NCMB || require("ncmb");
var ncmb = new NCMB(apikey, clientkey);
ncmb.Script
    .data({"name": "name", "file": binary_file })   // リクエストボディを指定
    .exec("POST", "test.js")
    .then(function(res){
      // 実行後処理
      console.log("script run: Success\n" +JSON.stringify(res))
    })
    .catch(function(err){
      // エラー処理
     console.log("script run: Failed\n" + JSON.stringify(err))
    });

実行する側のスクリプト(node.jsを想定)でどのように受け取るのかについて も教えて下さい。

スクリプト側でファイルを受け取る方法は、以下のコード(上記コード内で指定した test.jsの中身)を参考いただければと存じます。

module.exports = function(req, res) {
  if (req.body.file) {
      var buf = new Buffer(req.body.file, 'binary');
      res.send(buf.toString('utf8'));
      res.status(200);
    } else {
      res.status(500);
    }
  }

以上でございます。今後ともよろしくお願いいたします。

agilet-tou commented 1 year ago

form-dataの形でファイルをアップロードした場合、以下のエラーが発生しました。 原因を教えていただけませんか

502 Bad Gateway

502 Bad Gateway


nginx
goofmint commented 1 year ago

@agilet-tou その部分のコードを見ないとなんとも言えません もしSDKを使わずに実装しているのであれば、APIを参考に実装してください