Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.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 如何将文件从postman发送到node js?_Javascript_Node.js_File Upload - Fatal编程技术网

Javascript 如何将文件从postman发送到node js?

Javascript 如何将文件从postman发送到node js?,javascript,node.js,file-upload,Javascript,Node.js,File Upload,我想将文件从postman上传到node js,但我遇到了问题。 邮递员 写入url、检查post方法、检查表单数据、检查文件、写入文件名并选择文件 这是我的密码 app.js 路由器.js router.post('/schedule/entry', function(req,res){ console.log(req.file.name); }); 如果我编写此代码,控制台将返回未定义的名称 router.post('/schedule/entry', function(req,re

我想将文件从postman上传到node js,但我遇到了问题。 邮递员 写入url、检查post方法、检查表单数据、检查文件、写入文件名并选择文件 这是我的密码 app.js

路由器.js

router.post('/schedule/entry', function(req,res){
   console.log(req.file.name);
});
如果我编写此代码,控制台将返回未定义的名称

router.post('/schedule/entry', function(req,res){
   console.log(req.file);
});
返回“未定义” 为什么?

package.json

  {
   "name": "nodejs-rest-api-authentication",
   "version": "1.0.0",
   "description": "",
   "main": "app.js",
   "scripts": {
   "start": "node server.js",
   "test": "echo \"Error: no test specified\" && exit 1"
 },
 "author": "",
 "license": "ISC",
 "dependencies": {
  "bcryptjs": "^2.4.3",
  "body-parser": "^1.16.1",
  "csv-array": "0.0.22",
  "csv-write-stream": "^2.0.0",
  "express": "^4.14.1",
  "express-fileupload": "^0.3.0",
"fast-csv": "^2.4.1",
"formidable": "^1.1.1",
"json2csv": "^3.11.5",
"jsonwebtoken": "^8.1.0",
"mysql": "^2.15.0"
  }
 }
server.js

const app = require('./app');
const port = process.env.PORT || 3000;

const server = app.listen(port, function() {
console.log('Server listening on port ' + port);
});


根据评论部分的讨论:

const express = require('express')
const app = express()
const formidable = require('formidable')
const path = require('path')
const uploadDir = '' // uploading the file to the same path as app.js

app.post('/', (req, res) =>{
  var form = new formidable.IncomingForm()
  form.multiples = true
  form.keepExtensions = true
  form.uploadDir = uploadDir
  form.parse(req, (err, fields, files) => {
    if (err) return res.status(500).json({ error: err })
    res.status(200).json({ uploaded: true })
  })
  form.on('fileBegin', function (name, file) {
    const [fileName, fileExt] = file.name.split('.')
    file.path = path.join(uploadDir, `${fileName}_${new Date().getTime()}.${fileExt}`)
  })
});


app.listen(3000, () => console.log('Example app listening on port 3000!'))
附加屏幕截图:


因为主体解析器中间件文件在req中不可用,所以您必须使用另一个中间件库,如or

req
中有什么?您还没有在
postman
中显示您在做什么。。。那么,我们猜猜看吗?你感兴趣的是什么?@A.Vahagn如果你不展示这是怎么叫的,我们只能猜测到底是怎么回事。哦。。所以,你不需要帮助,你可能做错了Herp当我向邮递员发送请求时,邮递员正在加载表单并对表单进行编码。parse未登录。我现在不知道。我的问题出在哪里?你能分享你的代码库packages.json吗?我可以试着复制我的代码库吗?还有你的app.js&server.js请更新答案,我刚刚用POSTMANCode测试了它不工作,当我在form.parse parth或form.on parth中编写console.log()时不工作。我现在不知道为什么?
const express = require('express')
const app = express()
const formidable = require('formidable')
const path = require('path')
const uploadDir = '' // uploading the file to the same path as app.js

app.post('/', (req, res) =>{
  var form = new formidable.IncomingForm()
  form.multiples = true
  form.keepExtensions = true
  form.uploadDir = uploadDir
  form.parse(req, (err, fields, files) => {
    if (err) return res.status(500).json({ error: err })
    res.status(200).json({ uploaded: true })
  })
  form.on('fileBegin', function (name, file) {
    const [fileName, fileExt] = file.name.split('.')
    file.path = path.join(uploadDir, `${fileName}_${new Date().getTime()}.${fileExt}`)
  })
});


app.listen(3000, () => console.log('Example app listening on port 3000!'))