【问题标题】:I can not get the full path of a file uploaded in nodejs我无法获取在nodejs中上传的文件的完整路径
【发布时间】: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

标签: node.js file path


【解决方案1】:

在你的代码uploadAvatar方法中 将 req.files.file.path 更改为 req.file.path 它现在应该工作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-24
    • 2016-11-26
    • 1970-01-01
    • 2011-04-17
    • 2012-03-17
    • 1970-01-01
    • 2014-05-10
    • 1970-01-01
    相关资源
    最近更新 更多