角度文件上传到nodejs后端无法读取文件内容

问题描述 投票:0回答:1

我使用的是角度文件上传,以前在使用Laravel Lumen作为后端时可以正常工作,但是我已移至Node,无法返回上传的文件内容。

前角

$scope.upload = Upload.upload({
    url: ENV.apiEndpoint + '/upload',
    method: 'POST',
    data: {
        fname: $scope.fname
    },
    file: file
}).progress(function(evt) {

}).success(function(data, status, headers, config) {
});

后端节点

上传/ index.js

'use strict';

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

var router = express.Router();
var multer = require('multer');

var storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, './my-uploads');
  },
  filename: function (req, file, cb) {
    cb(null, file.fieldname + '-' + Date.now());
  }
})

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


router.post('/', upload.single('file'), controller.index);

module.exports = router;

upload / upload.controller.js

'use strict';

var _ = require('lodash');
var db = require('../../db');
var https = require('https');
var Q = require('q');
var fs = require('fs');
var multer = require('multer');

exports.index = function(req, res, next) {
    console.log(req.files.file);
    res.status(204).end();
};

老Laravel流明请求

public function data(Request $request) {

    $path_parts = pathinfo($_FILES["file"]["name"]);
    $extension = $path_parts['extension'];
    $contents = file_get_contents( $_FILES['file']['tmp_name'] );
    return response()->json(['type'=> $extension, 'content'=> $contents]);
}

我要做的就是上传文件,但只将文件内容再次返回前端,我不希望存储该文件。

javascript angularjs node.js ng-file-upload
1个回答
0
投票

这里有一个例子,您有几处错误。 看看这个

 var storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, 'public/images/banks')
  },
  filename: function (req, file, cb) {
    crypto.pseudoRandomBytes(16, function (err, raw) {
      cb(null, raw.toString('hex') + path.extname(file.originalname));
    });
  }
});
var upload = multer({storage: storage});

router.post('/uploadImage', upload.single('file'), function (req, res, next) {
  if(!req.file) {
    res.status(400);
    res.send({error: 'No se pudo subir el archivo'});
  }

  res.send({filename: req.file.filename});
});
© www.soinside.com 2019 - 2024. All rights reserved.