本文用node进行图片上传主要借助formidable插件,具体使用步骤如下:

  1、安装formidable插件  

npm install formidable -D

  2、引入依赖包   

const formidable = require('formidable');

  3、接口实现逻辑

 router.post('/uploadFile', (req, res, next) => {
let form = new formidable.IncomingForm();
form.encoding = 'utf-8';
//上传到服务器指定文件夹
form.uploadDir =`public/${constant.UPLOAD_FOLDER}`;
form.keepExtensions = true; //保留后缀
form.maxFieldsSize = constant.IMAGE_SIZE;
let data = new MsgBean('上传失败',1);
form.parse(req, (err, fields, files) => {
if (err) {
data.setContent(err);
res.send(data);
return;
}
let file = files.file;
let fileType = new RegExp(file.type, 'g'); let isLegal = fileType.test(constant.IMAGE_TYPE);
if(!isLegal) {//判断上传图片格式是否合法
data.msg('非法的图片格式');
res.send(data);
return;
}
let fileSize = file.size;
if(fileSize > constant.IMAGE_SIZE) {//上传图片超出最大限度
data.msg('图片大小超出最大限制');
res.send(data);
return;
}
let index = file.name.lastIndexOf('.');
let oldPath = files.file.path;
let uploadDate = new Date().getTime();
let fileName = `${file.name.slice(0, index)}_${uploadDate}_origin.${file.name.slice(index+1)}`;
let newPath = `public/${constant.UPLOAD_FOLDER}/${fileName}`;
fs.rename(oldPath, newPath, err => {//图片更名
if(err) {
data.setContent('图片解析失败');
res.send(data);
return;
}
let baseUrl = req.headers.host;
let imgUrl = `http://${baseUrl}/${constant.UPLOAD_FOLDER}/${fileName}`;
let result = {
imgUrl
};
data.setCode(0);
data.setContent(result);
data.setMsg('上传成功');
res.send(data);
});
})
});

Node.js之图片上传的更多相关文章

  1. Node.js实现图片上传功能

    node接口实现 const express = require('express') const mysql = require('mysql') const cors = require('cor ...

  2. 使用express+multer实现node中的图片上传

    使用express+multer实现node中的图片上传 在前端中,我们使用ajax来异步上传图片,使用file-input来上传图片,使用formdata对象来处理图片数据,post到服务器中 在n ...

  3. js实现图片上传预览及进度条

    原文js实现图片上传预览及进度条 最近在做图片上传的时候,由于产品设计的比较fashion,上网找了比较久还没有现成的,因此自己做了一个,实现的功能如下: 1:去除浏览器<input type= ...

  4. 关于editor网页编辑器ueditor.config.js 配置图片上传

    最近公司项目在做一个门户网站,其中新闻和简介等部分使用到了ueditor编辑器,但是上级明确指示需要图片上传这个功能,这时却发现图片上传功能不能正常使用,上传时一直报错,网上收了好几个处理办法,都说的 ...

  5. [前端 4] 使用Js实现图片上传预览

    导读:今天做图片上传预览,刚开始的做法是,先将图片上传到Nginx,然后重新加载页面才能看到这个图片.在这个过程中,用户一直都看不到自己上传的文件是什么样子.Ps:我发现我真的有强迫症了,都告诉我说不 ...

  6. js判断图片上传时的文件大小,和宽高尺寸

    今天在做图片上传的小功能,使用了一个kissy上传组件.很好奇它是如何在图片上传前,检测到图片的大小和尺寸的?我们来写个小实例实现一下吧 如何读取图片的size 首先,原生input file控件有个 ...

  7. js实现图片上传及预览---------------------->>兼容ie6-8 火狐以及谷歌

    <head runat="server"> <title>图片上传及预览(兼容ie6/7/8 firefox/chrome)</title> & ...

  8. PHP+js实现图片上传,编辑

    文件上传,点击按钮并选择文件后,文件会临时存到一个位置,会有一个临时名字: 然后在php文件中处理,给文件起名并将文件从临时为止搬到服务器,把需要的文件信息返回给前端页面: 最后表单提交时,把文件信息 ...

  9. html + js 实现图片上传,压缩,预览及图片压缩后得到Blob对象继续上传问题

    先上效果 上传图片后(设置了最多上传3张图片,三张后上传按钮消失) 点击图片放大,可以使用删除和旋转按钮 (旋转功能主要是因为ios手机拍照后上传会有写图片被自动旋转,通过旋转功能可以调正) html ...

随机推荐

  1. ServiceMesh了解一下

    http://www.servicemesh.cn/?/article/70 https://zhuanlan.zhihu.com/p/33196550

  2. python 错误--UnboundLocalError: local variable '**' referenced before assignment

    val = 9 def test(flag): if flag: val = 1 else: print("test") return val if __name__ == '__ ...

  3. Django学习手册 - ORM choice字段 如何在页面上显示值

    在module操作过程中使用choice字段: 核心: obj.get_字段名_display 定义module 数据结构: class msg(models.Model): choice = ( ( ...

  4. Kali2.0第一节

    kali2.0很好的做了工具缩减,以及图形处理,重要的是msf更快了!汉化也远远超过了1.0 如果想要汉化,选择设置里面的Region&language  将language选择设置为中文,注 ...

  5. CentOS挂载光盘

    mkdir /mnt/cdrom mount /dev/cdrom /mnt/cdrom umount /dev/cdrom /mnt/cdrom 在Ambari集群中配置192.168.0.210: ...

  6. Oracle11g的database 和client的区别是什么?

    由于工作需要,刚开始接触oracle数据库,完全小白,下载的时候看到有database和client两种类型可供下载,一时不知如何是好,于是网上询问得知其中区别,在此记录一下自己的无知. “datab ...

  7. sql 学习

    .查看表结构用desc desc emp;   2.空表dual,最常用的空表,如: select 2 * 4 from dual; select sysdate from dual;   3.双引号 ...

  8. 018_nginx_proxy死循环问题

    今天线上遇到一个请求一次,触发多次的请求,而且直接把nginx机器压垮了.经排查,经过如下: 一. server{ server www.jyall.com; location /latestrele ...

  9. Oracle11默认用户名和密码

    安装Oracle时,若没有为下列用户重设密码,则其默认密码如下: 用户名 / 密码                      登录身份                              说明s ...

  10. 第一个Spring Boot程序

    Windows 10家庭中文版,java version "1.8.0_152", Eclipse Oxygen.1a Release (4.7.1a),Spring Tools ...