firebaseの添付ファイルをkintoneへPOSTしたいのですが、どうすればできるのかがわかりません。
⓵firebaseの画面(index.hbs)で、添付ファイルをfirebaseのAPI(index.js)にPOST送信
⓶firebaseのAPI(index.js)からkintoneに添付ファイルをPOST送信
⓵の方法は、下記のページを参照して、FormData() を使用してPOST送信することはできました。
https://teratail.com/questions/2426
しかし、⓶のAPI(index.js)で受信する際にどうすればよいのかがわかりません。
Unit8Array型のバイナリになっているようなのですが、この後どうすればよいのかわかりません。
よろしければ、どうしたらよいのかお教えください。
また、ファイルのパスをPOST送受信する等、別の手段があれば、お教えいただきたいです。
ソースは、以下の通りです。
#####firebaseの画面(index.hbs)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>true facts.</title> <script type="text/javascript" src="https://code.jquery.com/jquery-2.2.4.min.js"></script> <script></head> <body> <input type="file" id="files04" name="files04[]" onchange="handleFiles02(this.files)" multiple ><br> <input type="button" id="btnFile04" value="添付ファイル受取" onclick="inputFile04()"><br><br> </body> </html>var setFileList; // ファイルリスト保持 function handleFiles02(files) { setFileList = files; } // 添付ファイルを送信 function inputFile04() { alert(setFileList); // POST送信するためにインターフェースを利用して、値を設定 var fd = new FormData(); for(var fileIndex = 0; fileIndex < setFileList.length; fileIndex++) { fd.append(setFileList[fileIndex].name, setFileList); } // POSTでアップロード $.ajax({ url : "/inputFile04", type : "POST", data : fd, processData: false, // jQuery がデータを処理しないよう指定 contentType: false, // jQuery が contentType を設定しないよう指定 dataType: "html", success: function(result){ $("#result").html(result); alert(result); }, error:function(){ alert('失敗しちゃった。'); } }) } </script>
#####API(index.js)
const express = require('express');
const kintoneRec = require('request');
const app = express();
//firebaseの添付ファイルをkintoneへ連携
app.post('/inputFile04', (req, res) => {
// ファイル取得
let inputBody = req.body; // Unit8Array型のバイナリになっている。
let obj = {
'app': ***,
'record': {
'tempFile': {
'value': *** //どう値を設定すればよいのかわからない。
}
}
};
// // ポスト送信
sendPostKintone(res, obj, 'token');
});
///<summary>POST送信共通処理</summary>
///<param "sendRes">レスポンス</param>
///<param "sendObj">セットしたいアプリIDと値</param>
///<param "token">kintoneのAPIトークン</param>
function sendPostKintone(sendRes, sendObj, token)
{
// パラメータ設定
var params = {
url: 'https://******/k/v1/record.json',
method: 'POST',
json: true,
headers: {
'X-Cybozu-API-Token': token,
'Content-Type': 'application/json',
},
body: sendObj,
};
// kintone連携
commonToKintone(sendRes, params);
}
//<summary>kintoneリクエスト共通処理</summary>
///<param "sendRes">レスポンス</param>
///<param "params">セットしたいパレメータ</param>
function commonToKintone(sendRes, params)
{
// kintone連携
kintoneRec(params, function(err, resp, body) {
if (err) {
console.log(err);
sendRes.send(err.name);
return;
}
// データを返却。画面側で、受信したresultやメッセージ出力を制御 sendRes.send(JSON.stringify(body)); });
}
exports.app = functions.https.onRequest(app);
あなたの回答
tips
プレビュー