当前位置: 首页 > 知识库问答 >
问题:

使用multer和nodejs返回上传文件的文件名

袁凌
2023-03-14

我正在创建一个简单的应用程序,作为Ionic2的学习体验,它连接到运行multer的节点服务器上传图像。我遇到的问题是,我需要从multer获得最后的文件名回到上传它的应用程序,以保存它在本地。我使用@Ionic/Cloud-Angular中的Auth和User模块进行身份验证和用户信息。User对象有一个details对象,其中包含“name”、“email”、“username”、“image”等等,所以,当一个图像上传到节点服务器并且multer保存它时,我需要将该文件名返回到应用程序,以便更新User.details.image属性。

这里是我的节点服务器的一个简单版本...

var express = require('express');
var http = require('http');
var bodyParser = require('body-parser');
var multer = require('multer');
var cors = require('cors');
var postStorage = multer.diskStorage({
    destination: function(req, file, callback) {
        callback(null, './uploads');
    },
    filename: function(req, file, callback) {
        let fileName = '', postName;
        if(typeof req.body.postName !== "undefined") {
            postName = req.body.postName.toLowerCase().replace(/ /g, '-');
            filename += postName;
        }
        fileName += new Date().getTime();
        fileName += ".png";
        callback(null, fileName);
    }
});
var app = express();
app.set('port', process.env.PORT || 3000);
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
app.use(cors());
app.post('/upload', function(req, res) {
    var uploadPost = multer({storage: postStorage}).single('post_image');
    uploadPost(req, res, function(err) {
        if(err) {
            return res.end("error uploading file");
        }
        res.end("file uploaded");
    });
});
app.listen(app.get('port');
console.log("app listening on port: " _ app.get('port'));

有没有办法让它发回multer保存的最终文件名?类似于res.json({fileName:fileName});Res.End();在这一点上我真的不知道,我能在multer上找到的所有教程只是展示了如何创建一个新的文件名,并将文件保存在磁盘、数据库或内存中,但没有任何地方展示了如何将该文件名返回到上载它的应用程序中。事先谢谢你的帮助,我真的很感激。如果你需要看到离子2的代码,上传的东西,请让我知道,我将更新的帖子与该代码以及。谢谢.

共有1个答案

危斯伯
2023-03-14

如果上载的是单个文件,则可以使用req.file.filename获取文件名

如果上载多个文件req.files

获取文件名后,可以使用res.send({filename:filename});将其发送到客户端

 类似资料:
  • 我有一个express应用程序,正在使用multer上传文件,问题是当我在生产服务器上用PM2运行该应用程序时,multer上传文件给了我一个错误:

  • 问题内容: 谁能告诉我如何使用nodejs和HAPI上传文件? 我在处理程序中获取二进制数据。 这是我的html代码: 这是我的Nodejs代码: 问题答案: 最后,我得到了使用HAPI上传大型文件的解决方案,并感谢Roman。 解决方法如下: server.js代码 处理程序代码:

  • 我正在工作一个简单的文件上传网站,一直有麻烦坚持上传文件没有错误。我现在拥有的代码在一个要上传的文件小于~20KB时可以完美地工作,但是对于大于这个值但小于~1MB的文件,只上传了大约~20KB的文件(从而破坏了文件)。 对于大于1MB的文件,上载完全失败并返回502错误。我已经确定要增加multer FileSize/FieldSize限制,并且永远不会收到文件太大的错误。 当一个在~20KB-

  • 本文向大家介绍express文件上传中间件Multer详解,包括了express文件上传中间件Multer详解的使用技巧和注意事项,需要的朋友参考一下 前言 Express默认并不处理HTTP请求体中的数据,对于普通请求体(JSON、二进制、字符串)数据,可以使用body-parser中间件。而文件上传(multipart/form-data请求),可以基于请求流处理,也可以使用formidabl

  • 本文向大家介绍NodeJS使用formidable实现文件上传,包括了NodeJS使用formidable实现文件上传的使用技巧和注意事项,需要的朋友参考一下 最近自学了一下NodeJS,然后做了一个小demo,实现歌曲的添加、修改、播放和删除的功能,其中自然要实现音乐和图片的上传功能。于是上网查找资料,找到了一个formidable插件,该插件可以很好的实现文件的上传功能。该小demo用到了My

  • 我正在尝试在Node.js中使用multer上传mp4文件 例如:“C://~~~/Uploads” 你知道吗?