【发布时间】:2023-01-19 22:28:55
【问题描述】:
我正在用邮递员对其进行测试,图像已上传到后端,但我无法获取文件名
这是错误
类型错误:无法读取未定义的属性(读取“路径”) 在上传头像(/var/www/html/room/room-backend/controllers/room.js:741:33) 在 Layer.handle [作为 handle_request] (/var/www/html/room/room-backend/node_modules/express/lib/router/layer.js:95:5) 接下来 (/var/www/html/room/room-backend/node_modules/express/lib/router/route.js:137:13) 在表格。 (/var/www/html/room/room-backend/node_modules/connect-multiparty/index.js:114:7) 在 Form.emit(节点:事件:527:28) 在 emitCloseNT(节点:内部/流/销毁:145:10) 在 processTicksAndRejections (node:internal/process/task_queues:82:21)
这行var files = req.files.file.path;
这个 console.log 是空的 console.log(files);
房间.路线
var express = require('express');
var RoomController = require('../controllers/room');
var router = express.Router();
var md_auth = require('../middlewares/authenticated');
var multipart = require('connect-multiparty');
var md_upload = multipart({ uploadDir: './uploads/rooms' });
// Rutas de usuarios
router.post('/save', RoomController.save);
router.put('/update', md_auth.authenticated, RoomController.update);
router.put('/updateimage1', RoomController.updateImage1);
router.post('/saveimg', RoomController.saveImg);
//router.post('/saveimg/:id/:image1/', RoomController.saveImg);
router.post('/upload-avatar', md_upload, RoomController.uploadAvatar);
房间控制器
var fs = require('fs');
//import * as fs from 'node:fs';
var path = require('path');
//const path = require('node:path');
var User = require('../models/user');
var jwt = require('../services/jwt');
var Room = require('../models/room');
uploadAvatar: function(req, res) {
var files = req.files.file.path;
console.log(files);
我不知道错误在哪里。
我正在使用 nodejs 17.8.0
【问题讨论】:
-
据我在
connect-multiparty的代码中所见,req.files的密钥将是上传前文件的原始名称,而不是表单(或表单数据)中的字段名称。您可以尝试使用console.log(Object.keys(req.files));来验证是否是这种情况吗? -
我做到了 我得到了 [] ReferenceError: files is not defined at uploadAvatar (/var/www/html/room/room-backend/controllers/room.js:743:18) at Layer.handle [as handle_request] (/var /www/html/room/room-backend/node_modules/express/lib/router/layer.js:95:5)
-
据我所知,要么您没有正确发送文件,要么您的代码的另一部分某处存在错误。您是否愿意尝试使用
express-fileupload(非常相似的用法)或multer并从 HTML 页面而不是postman发送文件? -
我尝试使用 express-fileupload 不起作用,我有一个带角度的前端也不起作用,因为后端没有获取文件对象
-
我认为问题是 bodyparser 我已经评论了这一行,但我也弃用了 bodyparser