首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将文件从邮递员发送到节点js?

如何将文件从邮递员发送到节点js?
EN

Stack Overflow用户
提问于 2017-12-04 18:39:05
回答 2查看 3.7K关注 0票数 0

我想上传文件从邮递员到节点js,但我有问题。邮递员写url,检查post方法,检查表单数据,检查文件,写文件名和选择文件这是我的代码app.js

代码语言:javascript
复制
const express = require('express');
const bodyParser = require('body-parser');
const fileUpload = require('express-fileupload');

app.use(fileUpload());
app.use(bodyParser.urlencoded({extended: false}));
app.use(bodyParser.json());

router.js

代码语言:javascript
复制
router.post('/schedule/entry', function(req,res){
   console.log(req.file.name);
});

如果我写这段代码,控制台返回我未定义的名称

代码语言:javascript
复制
router.post('/schedule/entry', function(req,res){
   console.log(req.file);
});

返回'undefined‘为什么?

package.json

代码语言:javascript
复制
  {
   "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

代码语言:javascript
复制
const app = require('./app');
const port = process.env.PORT || 3000;

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

screenshots screenshots

codeGit

EN

回答 2

Stack Overflow用户

发布于 2017-12-04 18:46:03

基于评论部分的讨论:

代码语言:javascript
复制
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!'))

附加屏幕截图

票数 1
EN

Stack Overflow用户

发布于 2020-10-08 21:13:53

由于正文解析器,中间件文件在请求中将不可用,因此您必须使用其他中间件库,如connect-busboymulterconnect-multiparty

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47631433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档