This article mainly introduces the NodeJS image upload code (Express). The editor thinks it is quite good. Now I will share it with you and give it as a reference. Let’s follow the editor and take a look.
File upload is inevitable for every website. Recently, we need to do some functions to upload pictures. We mainly solve two problems. One is the file upload style. And save the server path, the function is very simple, but it is not that simple to do. Let’s start with the upload page style of the simplest page.
Page style
The default upload of the Html page is relatively ugly. You need to redo a background image and add the uploaded one through the background image. Image:
Upload image style:
##
<p class="upload-container"> <input type="file" name="fileToUpload" id="fileToUpload" class="fileupload" /> </p>
CSS style:
.upload-container { background-image: url(../../images/rv/add.jpg); background-repeat: no-repeat; width: 180px; height: 200px; padding-bottom: 10px; display: inline-block; vertical-align: middle; .fileupload { opacity: 0; filter: alpha(opacity=0); width: 200px; height: 200px; } }
$('.fileupload').change(function(event) { /* Act on the event */ if ($('.fileupload').val().length) { var fileName = $('.fileupload').val(); var extension = fileName.substring(fileName.lastIndexOf('.'), fileName.length).toLowerCase(); if (extension == ".jpg" || extension == ".png") { var data = new FormData(); data.append('upload', $('#fileToUpload')[0].files[0]); $.ajax({ url: 'apply/upload', type: 'POST', data: data, cache: false, contentType: false, //不可缺参数 processData: false, //不可缺参数 success: function(data) { console.log(data); }, error: function() { console.log('error'); } }); } } });
Server-side save
NodeJS server-side save You need to use the third-party plug-in node-formidable, npm installation address:npm install formidable@latest
var cacheFolder = 'public/images/uploadcache/';<br>exports.upload = function(req, res) { var currentUser = req.session.user; var userDirPath =cacheFolder+ currentUser.id; if (!fs.existsSync(userDirPath)) { fs.mkdirSync(userDirPath); } var form = new formidable.IncomingForm(); //创建上传表单 form.encoding = 'utf-8'; //设置编辑 form.uploadDir = userDirPath; //设置上传目录 form.keepExtensions = true; //保留后缀 form.maxFieldsSize = 2 * 1024 * 1024; //文件大小 form.type = true; var displayUrl; form.parse(req, function(err, fields, files) { if (err) { res.send(err); return; } var extName = ''; //后缀名 switch (files.upload.type) { case 'image/pjpeg': extName = 'jpg'; break; case 'image/jpeg': extName = 'jpg'; break; case 'image/png': extName = 'png'; break; case 'image/x-png': extName = 'png'; break; } if (extName.length === 0) { res.send({ code: 202, msg: '只支持png和jpg格式图片' }); return; } else { var avatarName = '/' + Date.now() + '.' + extName; var newPath = form.uploadDir + avatarName; displayUrl = UPLOAD_FOLDER + currentUser.id + avatarName; fs.renameSync(files.upload.path, newPath); //重命名 res.send({ code: 200, msg: displayUrl }); } }); };
fs.renameSync(files.upload.path, newPath); //重命名
##
form.on('progress', function(bytesReceived, bytesExpected) { });
The above is the detailed content of NodeJS image uploading example tutorial. For more information, please follow other related articles on the PHP Chinese website!