Tag: multer

使用Multer在NodeJs中上传文件,如果文件已经存在,则更改名称

我需要从我的客户端上传文件到节点服务器(我使用Multer执行此任务)。 要求是如果服务器上已经存在一个同名的文件,我需要更改新文件的名称。 我使用Node fs.stat来检查是否存在具有相同名称的文件。 我一定是做错了,因为fs.stat总是告诉我没有同名的文件,实际上它是在那里的(我最终用新文件覆盖旧文件)。 这是代码。 var imagesDirectory = 'images'; var imageDir = '/' + imagesDirectory + '/'; var storageDisk = multer.diskStorage({ destination: imagesDirectory, filename: function (req, file, callback) { let uploadedFileName; fs.stat(imageDir + file.originalname, function(err, stat) { if (err==null) { uploadedFileName = Date.now() + '.' + file.originalname; } else if(err.code == 'ENOENT') { uploadedFileName […]

使用Mulder上传和redirect页面

我有一个问题,redirect的页面成功的file upload后,使用multer 。 随着file upload,我也保存一些文本到数据库中。 这是我的代码。 题 : 当文件和内容保存在数据库中时,如何将页面redirect到新的URL? 我目前正在使用res.redirect('product/item'); 但没有任何反应。 我也尝试使用res.render ,但页面没有redirect。 Multer方法将file upload到Amazon S3 var upload = multer({ storage: multerS3({ s3: s3, bucket: 'nameofthebucket', metadata: function (req, file, cb) { var ext = file.originalname.split('.').pop(); cb(null, {fieldName: 'file.fieldname' + '.' + ext}); }, filename: function(req,file,cb){ var ext = file.originalname.split('.').pop(); cb(null, Date.now() + '.' + […]

使用Multer上传文件,并在parsing并上传到数据库之前将其暂时存储在内存中

我对编程相对来说比较新,但是我会尽可能简化。 我正在使用multer来尝试上传一个XML文件。 我有一个Node Express服务器,我也使用React .jsx。 上传后,我将parsing该文件数据并将其发布到Postgres数据库。 所以考虑到这一点,我不写上传的文件到磁盘,我只是在parsing之前使用multer的缓冲区属性存储它。 我有一个使用jQuery进行表单提交的小型testing项目,但是我没有在这里使用jQuery,而且我不确定表单提交如何在React中真正起作用,或者甚至是这个问题。 我只包括与使用multer直接相关的代码。 其他一切工作正常。 这是我的表单: <form id="uploadForm" ref="form" encType="multipart/form-data" method="post" action="/upload" onSubmit={this.handleSubmit} > <input type="file" name="songlist" /> <input type="submit" value="UploadFile" name="submit" /> </form> 这是我的表单提交处理在同一个组件。 onSubmit会自动提交表单还是我应该在这里做别的事情? handleSubmit(event) { console.log('hey'); event.preventDefault(); this.props.postSongs(); }, postSongs()调用我的服务器端路由: postSongs() { axios.post("/upload") .then(() => { console.log('success') }) .catch((err) => { console.error(err); }); }, 而在我的服务器端路由,我正在发出请求,应该得到该文件存储在multer的内存中: const multer […]

如果有人通过节点js应用程序中的multer将扩展名从exe更改为png,则不应允许文件上载

我正在使用multer在我的nodejs(快速js)应用程序工作正常上传文件。 我已经把一个MIMEtypes检查那里也允许只有PNG文件,但如果我把上传的文件的abc.exe从abc.exe更改为abc.png它也得到上传这是错误的。 这是我的代码。 var multer = require('multer'); var imagefolder = __base + 'public/complaintimages/'; var diskstorage = multer.diskStorage({ destination: function (req, file, cb) { if (common.ImageMimeTypes.indexOf(file.mimetype) < 0) { common.ActionOutput.Status = common.ActionStatus.WrongFileUploaded; common.ActionOutput.Message = 'Invalid image file: ' + file.originalname; cb(new Error('FileUpload:' + common.ActionStatus.WrongFileUploaded), null); } else cb(null, imagefolder); }, filename: function (req, file, cb) { […]

node.js无法在集成testing中上传文件

我在重构之前将集成testing添加到遗留代码库。 在这种情况下,上传一个文件。 考试: it('uploads a photo at the specified index', done => { chai.request(server.instance) .post('/profile/photo/0') .set('Access-Token', `${token}`) .set('API-Key', testConfig.apiKey) .field({contentId: 'foobar'}) .attach('file', fs.readFileSync(__dirname + '/logo.png'), 'file') .end((err, res) => { console.log(JSON.stringify(res.body)) res.should.have.status(200) done() }) }) 正在testing的端点在生产中工作正常。 但为了让testing通过,我必须在multer模块的make-middleware.js中注释以下几行: if (!includeFile) { // appender.removePlaceholder(placeholder) // return fileStream.resume() } 对节点没有经验,我一定错过了一些configuration或者其他东西。 我怎样才能使我的testing通过(无需修改外部模块的代码)?

如何使用可选文件提交提交Multer表单?

我正在使用Mulder在我的快速应用程序中提交表单。 问题是表单有可选的图像提交选项。 这意味着用户可以添加照片,如果他/她想要,但他/她可以提交没有图像的forms。 图像提交没有问题。 但是,没有形象的时候,即使不是其他领域,也不会提交表格。 const express = require('express'); const router = express.Router(); const Company = require('../controller/CompanyController'); const multer = require('multer'); const path = require('path'); let storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, './public/images/logos'); }, filename: function (req, file, cb) { cb(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname)); } }); let […]

Multer上传不是一个function

我正在使用Multer来创build上传文件系统。 我遵循Github页面的指示,但它不工作。 我明白了 const express= require('express'); const app = express(); const multer = require('multer'); const storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, '/uploads'); }, filename: function (req, file, cb) { cb(null, file.fieldname + '-' + Date.now()); } }); const upload = multer({ storage: storage }); app.post('/editPhoto',upload.single('avatar'),function(req,res,next){ upload(req,res,function(err){ if(err){ res.json({success:false,message:err}); } else{ res.json({success:true,message:"Photo […]

Multer没有上传文件

我试图用multer从客户端的html表单上传文件到服务器端,multer模块处理服务器端的文件。 这里的东西是一切都好,因为我得到了从服务器的200 OK响应,但该文件应该上传到我的文件系统,我看不到它。 这是我的HTML表单 <template> <div id="app"> <form action="http://localhost:3000/upload" method="post" enctype="multipart/form-data"> <h2>Select a file</h2> <input name="curriculum" id="inputVal" type="file"> <button type="submit">Send</button> </form> </div> </template> 我的服务器端代码 var express = require('express'); var router = express.Router(); var path = require('path'); var fs = require('fs'); var multer = require('multer') var storage = multer.diskStorage({ destination: function(req,file,callback) { callback(null, '../files'); }, filename: […]

当我在onFileUploadStart()中包含逻辑时,Multer不上载文件 – NodeJs

我试图用multer只上载带有节点的图像文件 file upload成功与此: app.use(multer({ dest: __dirname + '/public/uploads/', onFileUploadData: function (file, data) { console.log(data.length + ' of ' + file.fieldname + ' arrived'); }, onFileUploadComplete: function (file) { console.log(file.fieldname + ' uploaded to ' + file.path); } })); 但我想限制它只有图像,并添加一些用户身份validation(用户身份validation尚未实现在下面的例子中)。 当我启动包含onFileUploadStart的服务器时,它将login到它上传的控制台,但是当我检查我的上传文件夹时,什么也没有。 app.use(multer({ dest: __dirname + '/public/uploads/', onFileUploadStart: function (file) { console.log(file.mimetype); if (file.mimetype !== 'image/png' || […]

file upload挂在生产代码上,但在本地工作 – multer,node.js

我正在写快速3,现在我们升级到expression4,我有一个file upload的问题。 一切工作在我的本地计算机mac OSX,但不能在Ubuntu的生产服务器上工作。 我正在上传zip文件,里面有png和psd。 我正在上传文件的多部分forms:与multer中间件。 当地一切都好,但在生产环境中,连接正在打破。 文件开始上传到主上传根,但作为一个块的一部分,例如我上传50 MB的zip文件,但上传大约30 kb和连接中断,因为上传数据块的onFileDataupload事件是中断。 app.js中的设置 我的身体分析器设置: app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false }) ); 我的Muller设置: app.use(multer({ dest: './upload', limits: { fieldNameSize: 500, files: 2, fields: 20, fileSize: 200 * 1024 * 1024 }, rename: function (fieldname, filename) { return fieldname + filename + Date.now(); }, onFileUploadStart: function (file) { console.log('Upload starting […]