質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.57%

firebaseの添付ファイル(画像)をkintoneへPOST

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 410

GrassWonder

score 4

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>

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>
</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>

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);

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.57%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る