【问题标题】:Trying to save files to server (Express) from client (Angular) using multer尝试使用 multer 从客户端(Angular)将文件保存到服务器(Express)
【发布时间】:2017-01-23 20:32:44
【问题描述】:

我没有收到错误,但目录中没有文件,所以我完全迷失了在哪里寻找错误。我非常感谢提供的任何帮助。

HTML:

      <div class="form-group">
            <label for="file">File</label>
            <input type="file" name="file" onchange="angular.element(this).scope().uploadFile('front',this.files)"/>
            <label for="file">File2</label>
            <input type="file" name="file" onchange="angular.element(this).scope().uploadFile('back',this.files)"/>
        </div>

角度:

.controller('UploadCtrl', function ($scope, close, Pics) {
    var fd = new FormData();
    $scope.uploadFile = function(fileType, files){
        fd.append(fileType , files)
    }

    $scope.con = function () {
        Pics.sendPhotos(fd)
    }
})

工厂文件:

.factory('Pics', function ($http) {
    var sendPhotos = function (files) {
      return $http({
        method: 'POST',
        url: '/upload/photos',
        headers: {
          'Content-Type': ''
        },
        data: files,
        transformRequest : angular.identity
      }).then(function (resp) {
        console.log('done')
      })
    }

    return ({
      sendPhotos
    })
  })

服务器:

var express = require('express');
var morgan = require('morgan');
var bodyParser = require('body-parser');
var path = require('path');
var multer = require('multer');


var app = express();


var storage = multer.diskStorage({
  destination: function (req, file, cb){
    cb(null, '/Users/pheon/Desktop/Smartfolio-1/server/uploads')
  },
  filename: function (req, file, cb){
    cb(null, file.fieldname)
  }
})

var upload = multer({storage: storage});

var middle = upload.fields([{
  name: 'front', maxcount: 1
}, {name: 'back', maxcount: 1}]);

app.use(middle);
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(morgan('dev'));

app.use(express.static(path.join(__dirname, '/../client')));

require('./routes.js')(app, express);
var port = process.env.PORT || 8000;

app.listen(port, function () {
  console.log('Listening on port ', port);
})


module.exports = app;

路线

var uController = require('./controllers/userController.js');
var iController = require('./controllers/imgController.js');
var multer = require('./config/multer')

module.exports = function (app, express) {
  app.post('/signin', uController.signin);
  app.post('/register', uController.register);
  app.get('/photos', iController.fetch);
  app.post('/upload/photos', iController.upload);
}

imgController(进行中):

var db = require('./../config/db');
module.exports = {
  fetch: function (req, res) {
    console.log('here')
  },
  upload: function (req, res) {
    console.log(req.body)//shows up empty
  }
};

【问题讨论】:

    标签: javascript angularjs express multipartform-data multer


    【解决方案1】:

    我找到了解决方案。在工厂文件中,而不是 content-type : '' 应该是content-type: undefined

    【讨论】:

      猜你喜欢
      • 2014-05-15
      • 1970-01-01
      • 1970-01-01
      • 2021-05-30
      • 1970-01-01
      • 2019-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多