2017-02-14 14 views
1

私はバックエンドでfeathers.jsを使用しており、フロントエンドでリアクションを行い、画像をアップロードする方法を実装する必要があります。私はアップロードを処理するためにmulterを使用しています(そして私もバスボーイを使ってみました)が、実際の画像をアップロードできないか、少なくともreq.fileにアクセスしているようです。feathers.jsとmulterを使って写真をアップロードするには?

私はクライアント側で

私が持っている /src/middleware/index.js
<form method="post" enctype="multipart/form-data" action="/picture/upload"> 
    <input type="file" name="avatar" /> 
    <input type="submit" value="Submit" /> 
</form> 

'use strict'; 

const uploadPicture = require('./uploadPicture'); 

const handler = require('feathers-errors/handler'); 
const notFound = require('./not-found-handler'); 
const logger = require('./logger'); 
var multer = require('multer'); 
const upload = multer({ dest: '../../client/img'}); 

module.exports = function() { 
    // Add your custom middleware here. Remember, that 
    // just like Express the order matters, so error 
    // handling middleware should go last. 

    const app = this; 

    app.post('/picture/upload', upload.single('avatar'), uploadPicture(app)); 
    app.use(notFound()); 
    app.use(logger(app)); 
    app.use(handler()); 
}; 

これはsrc/middleware/uploadPicture.js次のとおりです。

'use strict'; 

module.exports = function(app) { 
    return function(req, res, next) { 
    console.log('req.file', req.file); 
    console.log('req.body', req.body); 

    }; 
}; 

req.fileは常に定義されていない、とreq.bodyは含まれていませんアップロードした画像の名前。

基本的なExpressプロジェクトでmutlerとbusboyを使って試してみましたが、これは完全に動作していますので、feathers.jsのミドルウェアと何か関係があり、そのため、multerは要求オブジェクトにファイルを追加できません。このシナリオでは、画像のアップロードを処理する方法に

app.use(compress()) 
    .options('*', cors()) 
    .use(cors()) 
    .use('/', serveStatic(app.get('client'))) 
    .use(bodyParser.json()) 
    .use(bodyParser.urlencoded({ extended: true })) 
    .configure(hooks()) 
    .configure(rest()) 
    .configure(services) 
    .configure(middleware); 

任意の考えを:

これは、サーバインスタンスが実行されるところである、ミドルウェアがsrc/app.jsに定義されているためでしょうか?

+0

[feathersjsで画像をアップロードするにはどうすればいいですか?](https://stackoverflow.com/questions/47174807/how-upload-image-with-feathersjs) –

+0

@BinUry別の問題が解決しました。この質問は古いものです。 –

答えて

0

私は反応しているので、enctypesupported HTML attributeではありません。私はencTypeを自分のフォームに使用していたはずです。それは問題を解決しました。

関連する問題