简体   繁体   English

使用nodejs上传文件,使用dropzone进行表达和角度

[英]File upload with nodejs, express and angular using dropzone

I'm having trouble getting the file recognized server side with node. 我在获取文件识别节点的服务器端时遇到问题。

Specifically when accessing request data, (req.files or req.body) 特别是在访问请求数据时(req.files或req.body)

Here are some snippets if someone has any advice. 如果有人有任何建议,请参考以下摘录。

html : html

<form action="/upload" class="dropzone" drop-zone id="file-dropzone"></form>

angular controller : 角度控制器

'use strict';

angular.module('app')
  .controller('SampleCtrl', function ($scope, $http) {


  })

  .directive('dropZone', function() {
    return function(scope, element, attrs) {
     $(element).dropzone({ 
        url: "/upload",
        maxFilesize: 100,
        maxThumbnailFilesize: 5
    });
  }
});

node router : 节点路由器

'use strict';

var express = require('express');
var controller = require('./import.controller');

var router = express.Router();

router.post('/', controller.import);

module.exports = router;

node controller : 节点控制器

'use strict';

var express = require('express'),
    _ = require('lodash'),
    fs = require('fs'),
    path = require('path'),
    multer = require('multer'),
    bodyParser = require('body-parser'),
    app = express();

app.use(bodyParser.urlencoded({extended: true}));

exports.import = function(req, res) {
    console.log(req.files); // responds with 'undefined'
    console.log(req.body); // responds with {}
};

thanks in advance 提前致谢

You have to actually use the file upload middleware to get express to unpack that part of the request. 您必须实际使用文件上传中间件来表达要求,以解压缩请求的那一部分。 From the multer docs: 来自multer文档:

var express = require('express')
var multer  = require('multer')

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

console.log(req.body)
console.log(req.files)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM