Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过HTTP请求发送文件_Javascript_Node.js - Fatal编程技术网

Javascript 通过HTTP请求发送文件

Javascript 通过HTTP请求发送文件,javascript,node.js,Javascript,Node.js,我试图接收文件并将其存储在multer存储器中 app.post('/createlicense',upload.single('photo'),函数(req,res,next){ //这里有什么逻辑 console.log("filename" ,req.body.name) if (!req.file) { console.log("No file received"); return res.send({ success:

我试图接收文件并将其存储在multer存储器中

app.post('/createlicense',upload.single('photo'),函数(req,res,next){ //这里有什么逻辑

   console.log("filename" ,req.body.name)
    if (!req.file) {
        console.log("No file received");
        return res.send({
          success: false
        });

      } else {
        console.log('file received');

        var function_name = 'createLicence'
     var arguments_array =  [req.file.path,'Raghav','Mumbai','Approved']
     invoke = require('/Users/sanjeev.natarajan/fabric-samples/fabcar/invoke.js');
     invoke.invokechaincode(function_name,arguments_array)  
     return res.send({
        success: true 
      })
      }

});    
但我没有收到任何文件

- 发件人:

为了使用multer包,您必须首先定义几个参数,以便它可以在您的fileDirectory上工作

在server.js中:

let multer = require('multer');

let storage = multer.diskStorage({
  destination: function(req, file, cb) {
    cb(null, '/path/to/storage/')
  },
  filename: function(req, file, callback) {
    callback(null, file.originalname + '-' + Date.now());
  }
});

let upload = multer({
  storage: storage
});
现在,配置您的路线

router.route('/your/payload')
  .post(authController.isAuthenticated, upload.any(), albumController.postFile)
请注意,
upload.any()
将允许您一次上载多个不同格式的文件。根据需要,可以随意使用任何其他类型的upload.method()

从这一点来看,
multer
已经完成了它的工作,但是您可能希望跟踪上传到服务器上的文件

因此,在您自己的模块中,逻辑非常简单:

(我假设您使用的是猫鼬模型,因为您没有提供太多信息,但无论如何这不是相关部分)

此配置和中间件的使用仅用于测试目的,在未仔细处理上载过程(文件完整性、资源管理等)的情况下,绝不允许任何人将内容上载到您的服务器。开放的上载系统可能会成为一个非常大的后门,直接进入您的服务器

希望这有帮助,
注意。

请包括所有相关信息(代码、错误、日志)作为文本而不是图像。我没有收到任何错误,但req.file未定义请添加代码并堆栈跟踪和配置。node js代码已添加请将您的代码作为文本粘贴到问题中。并使用
CTRL-k
将其格式化。这仅用于上载文件,然后在ipfs中创建哈希。非常感谢
router.route('/your/payload')
  .post(authController.isAuthenticated, upload.any(), albumController.postFile)
exports.postFile = async (req, res) => {
if (!req || !req.files || !req.files[0]) return res.status(400).send("Bad request.");

for (let i = 0; req.files[i]; i++) {
  await File.create({
    path: req.files[i],
    originalName: req.files[i].originalName,
    mimetype: req.files[i].mimetype,
    owner: req.user.userId
    }, (err, file) => {
    if (err) console.log("Something went wrong: " + err); else {
       // Do something with file
      }
    });
  }
  return res.status(418).send("I'm a teapot.");
}