javascript - 在 Express Route 中使用 Multer? (使用 MEANJS)

标签 javascript express meanjs multer

我正在使用 Multer在 Express 4 中上传图像。但是,所有示例都显示 Multer 在 express 文件中被定义为中间件。我想在我的应用程序路由本身中实际定义一些 Multer 行为。这可能吗?我需要的最终结果是我的路由功能在将服务器响应发送到浏览器之前识别上传何时完成,因此可以向用户显示图像(现在我只显示部分图像,因为该文件尚未完成上传)。

当前的工作代码

express.js

// Require Multer as module dependency.
var multer = require('multer');

// Using Multer for file uploads.
app.use(multer({
    dest: './public/profile/img/',
    limits: {
        fieldNameSize: 50,
        files: 1,
        fields: 5,
        fileSize: 1024 * 1024
    },
    rename: function(fieldname, filename) {
        return filename;
    },
    onFileUploadStart: function(file) {
        if(file.mimetype !== 'image/jpg' && file.mimetype !== 'image/jpeg' && file.mimetype !== 'image/png') {
            return false;
        }
    }
}));

server_routes.js

app.route('/users/image').post(server_controller_file.imageUpload);

server_controller_file.js

exports.imageUpload = function(req, res) {
// Check to make sure req.files contains a file, mimetypes match, etc., then send appropriate server response.
};

理想情况下,我的 server_controller_file.js 会包含一些检查以确保文件已完成上传,例如(注意:这是假设的/理想的,而不是实际的工作代码)...

var multer = require('multer');
exports.imageUpload = function(req, res) {
    multer({
        onFileUploadComplete: function(file) {
            res.send();
        }
    });
}

同样,现在节点的异步特性导致浏览器在收到成功响应后立即认为上传已完成,因此当我更新 url 以显示图像时,它只显示部分。感谢您的帮助!

最佳答案

其实你可以用另一种方法做你想做的:

var express = require('express');
var multer  = require('multer');
var upload = multer({ dest: './uploads/'});
var app = express();

app.get('/', function(req, res){
  res.send('hello world');
});

// accept one file where the name of the form field is named photho
app.post('/', upload.single('photho'), function(req, res){
    console.log(req.body); // form fields
    console.log(req.file); // form files
    res.status(204).end();
});

app.listen(3000);

关于javascript - 在 Express Route 中使用 Multer? (使用 MEANJS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27785896/

相关文章:

mongodb - 哪种搜索方法可行( Elasticsearch + mongoDB)或mongoDB文本索引

javascript - 网站音频剪辑记录器

javascript - 如何从字符串中获取最后一个字母?

javascript - JQuery通过函数发送ajax

node.js - multer 无法识别带有 PUT 的文件

javascript - 如何在 express 和 bodyParser 中接受 application/csp-report 作为 json?

java - JOGL 小程序与 WebGL

node.js - 不能在另一个 Controller 中使用 req.user

javascript - 我如何在 meanjs 中存储 ng-repeat 数组形式的数据?

node.js - 在 multer 中动态上传文件到项目特定目录