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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

kintone

kintone(キントーン)とは、サイボウズ社が提供する業務改善プラットフォームです。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Q&A

0回答

807閲覧

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

GrassWonder

総合スコア4

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

kintone

kintone(キントーン)とは、サイボウズ社が提供する業務改善プラットフォームです。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

0グッド

0クリップ

投稿2020/04/30 04:27

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問