前提・実現したいこと
nodejs
express
multer
monaca-lib
を使ってformで選択されたfileをクラウド上でmonacaにアップロードしたいのですが、うまくいきません。
どうすれば解決できるのでしょうか?
発生している問題・エラーメッセージ
{"status":"fail","code":500,"message":"Cannot create file: /data/monaca-projects/XXX/XXX/test.txt"}
該当のソースコード
javascript
1 2const express = require('express'); 3const fs = require('fs-extra'); 4 5const Monaca = require('monaca-lib').Monaca; 6const Multer = require('multer'); 7 8const multer = Multer({ 9 storage: Multer.memoryStorage(), 10 limits: { 11 fileSize: 5 * 1024 * 1024, // no larger than 5mb, you can change as needed. 12 } 13}); 14const monaca = new Monaca({clientType: 'api'}); 15 16const app = express(); 17 18app.post('/', multer.single('hoge'), (req, res) => { 19 20 monaca.login('メアド', 'パスワード').then(()=>{ 21 monaca._post_file('/project/xxx/file/save/' + encodeURIComponent('www/test.txt'), { 22 path: 'www/test.txt', 23 file: req.file.buffer 24 }).then(()=> { 25 res.send('完了'); 26 monaca.logout(); 27 }, (error)=>{ 28 res.send(error); 29 monaca.logout(); 30 }); 31 res.send('OK'); 32 monaca.logout(); 33 },(error)=>{ 34 res.send(error); 35 monaca.logout(); 36 }); 37 38}); 39 40 41app.get('/', (req, res) => { 42 res.send('<form action="/" method="post" enctype="multipart/form-data"><input type="file" name="hoge" /><input type="submit" value="送信" /></form>'); 43}); 44 45const PORT = process.env.PORT || 8080; 46app.listen(PORT, () => { 47 48}); 49
試したこと
npm start
でlocalhost:8080にアクセスしてファイルを選択してsubmitしました。
ログインは正常に動作しました。
あなたの回答
tips
プレビュー