モバイルtriggerioアプリからnodejsサービスにファイルを投稿しようとしています。リクエストはpostメソッドにヒットしますが、リクエストobjのフォームオブジェクトがnullであるため、失敗します。(TypeError:未定義のメソッド'complete'を呼び出すことはできません)
この投稿で受け入れられた回答のコードを採用しました:Node.js、Express、Mongooseを使用した画像のアップロード
これは私の現在のnodejsコードです:
var express = require('express')
, form = require('connect-form');
var app = express.createServer(
form({ keepExtensions: true })
);
app.post('/fileupload', function(req, res, next){
//req. form is nulL
req.form.complete(function(err, fields, files){
if (err) {
next(err);
} else {
console.log('\nuploaded %s to %s'
, files.image.filename
, files.image.path);
res.redirect('back');
}
});
req.form.on('progress', function(bytesReceived, bytesExpected){
var percent = (bytesReceived / bytesExpected * 100) | 0;
process.stdout.write('Uploading: %' + percent + '\r');
});
});
app.listen(process.env.PORT);
console.log("express started");
そして、これはtriggerioでの私のアップロード方法です:
function uploadFile (file){
forge.request.ajax({
url: 'http://resttrigger.aykarsi.c9.io/fileupload',
type: 'POST',
files: [file],
fileUploadMethod: 'raw',
dataType: 'json',
success: function (data) {
forge.logging.log("success " + data);
},
error: function (e) {
forge.logging.log("error " + e);
}
});
}