Skip to content
This repository has been archived by the owner on Apr 1, 2024. It is now read-only.

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

Open
ncmbsupport opened this issue Jan 13, 2023 · 3 comments

Comments

@ncmbsupport
Copy link

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

@ncmbsupport
Copy link
Author

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

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

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

  • アプリ(JavascriptSDK)からの検証コード
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の中身)を参考いただければと存じます。

  • ファイル名: 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
Copy link

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

<title>502 Bad Gateway</title>

502 Bad Gateway


nginx

@goofmint
Copy link

goofmint commented Jun 2, 2023

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

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

3 participants