angular 文件上传 nervgh/angular-file-upload

angular file upload with nervgh/angular-file-upload

我正在从 angular 执行 https://github.com/nervgh/angular-file-upload 插件上传文件,我的设置是这样的:

var vm = this,
    apiUrl = appConfig.getItem('BASE_API_URL'), // base url;

vm.uploader = $scope.uploader = new FileUploader({
    url: apiUrl + '/invoices/upload',
    headers: {
      "Content-Type": undefined
    }
});

// this function is triggered by a button outside
vm.uploadAll = function () { 
  vm.uploader.uploadAll();
};

在 html 我有

    <input id="uploadFileButton"
       type="file"
       nv-file-select
       uploader="FUCtrl.uploader"
       multiple
       style="display: none;"/> 
    // the display none is due to that this input is click triggered
    // by an outside button

问题是,对于从客户端开始的 post 请求,我看到了这个

上传了一张图片(理论上),但内容类型未定义,缺少 enctype,另一方面在服务器端我有这个

var express = require('express'),
    multer  = require('multer'),
    cors = require('cors');

var app = express();

app.use(cors());
app.get('*', function(){});

app.use(multer({dest:'./uploads/'}).single('photo'));

app.post('/upload', function(req, res){

  console.log('hit');

  console.log(req.body); // form fields
  console.log(req.files); // form files
  res.status(204).end();

});

app.listen(3000);

但是当我收到 post 我在控制台上看到 console.log(req.body); // {} console.log(req.files); // 未定义

我无法从 pdf 上传中获取任何数据

我错过了什么?

嘿伙计,我不知道那个插件。但我正在使用这个 https://github.com/danialfarid/ng-file-upload 插件,我发现它很有帮助。这是上传文件的最简单方法。

Upload with form submit and validations:

http://jsfiddle.net/danialfarid/maqbzv15/1118/

Upload multiple files one by one on file select:    

http://jsfiddle.net/danialfarid/2vq88rfs/136/

Upload multiple files in one request on file select (html5 only): 

http://jsfiddle.net/danialfarid/huhjo9jm/5/

Upload single file on file select: 

http://jsfiddle.net/danialfarid/0mz6ff9o/135/

Drop and upload with $watch: 

http://jsfiddle.net/danialfarid/s8kc7wg0/400/

Image Crop and Upload 

http://jsfiddle.net/danialfarid/xxo3sk41/590/

我终于在 HTML

上找到了解决方案
nv-file-select

应该是

nv-file-select=""

并删除

headers: {
  "Content-Type": undefined
}

从上传器配置来看,显然那些东西没有很好地设置内容类型和他的边界,所以我把它们拿出来让它工作