私は、mutipart/form-data URLRequest
を使用して、イメージとテキストをファイアベースサーバに送信するiosアプリケーションで作業しています。私のクラウド機能でデータを処理するために、私はJSON format
にmutipart/form-data
を解析するdocumentationに記載の方法を使用して、そしてここにいることは私のコードです:Busboyを使用したNode.jsのJSONへのMutipart/form-data
const Busboy = require('busboy');
exports.test = functions.https.onRequest((req, res) => {
console.log("start");
console.log(req.rawBody.toString());
if (req.method === 'POST') {
var busboy = new Busboy({ headers: req.headers});
busboy.on('field', (fieldname, val, fieldnameTruncated, valTruncated, encoding, mimetype) => {
console.log('field');
});
busboy.on('finish', function() {
console.log('finish');
res.json({
data: null,
error: null
});
});
req.pipe(busboy);
} else {
console.log('else...');
}
});
しかし、上記のコードは動作していないようあなたが見ることができるように、on('field')
関数が実行されません
Function execution started
start
--Boundary-43F22E06-B123-4575-A7A3-6C144C213D09
Content-Disposition: form-data; name="json"
{"name":"Alex","age":"24","friends":["John","Tom","Sam"]}
--Boundary-43F22E06-B123-4575-A7A3-6C144C213D09--
finish
Function execution took 517 ms, finished with status code: 200
:、ここコンソールから出力されます。私は何を取りこぼしたか?
はまた、ここにhttpRequest
を送信するためswift
のコードは次のとおりです。
var request = URLRequest(url: myCloudFunctionURL)
request.httpMethod = "POST"
request.setValue("multipart/form-data; boundary=myBoundary", forHTTPHeaderField: "Content-Type")
request.addValue(userToken, forHTTPHeaderField: "Authorization")
request.httpBody = myHttpBody
let session = URLSession.shared
session.dataTask(with: request) { (data, response, requestError) in
// callback
}.resume()
'POST'プロシージャを含めることができますか? – Stamos
ポストプロシージャが含まれています。 – AlexBains
1. POSTMANのようなものを使って、フォームデータで投稿を行い、クラウド機能が動作することを確認します。 2.あなたのコードは、 'myHttpBody'作成の部分を除いて、よく見えます。メッセージを正しく作成していない場合は正しく動作しません。 – Stamos