elementUi + express 上传图片
// 前端代码
<el-upload drag action="http://localhost:4001/article/uploadCoverImage" multiple list-type="picture" class="image-uploader">
<i class="el-icon-upload" />
<div class="el-upload_text"><em>上传封面图</em></div>
</el-upload>
使用插件 formidable -----> npm i formidable
后台代码
uploadCoverImage(req, res, next) {
let form = new formidable.IncomingForm()
form.encoding = 'utf-8' // 编码
form.keepExtensions = true // 保留扩展名
form.uploadDir = path.join(__dirname, '../../public/images/')
form.parse(req, (err, fields, files) => {
if (err) return next(err)
console.log(fields) //Object 表单数据
console.log(files) //上传文件用files.<name>访问
res.json({
code: 1,
message: 'upload success'
})
})
}
输出结果:
图片存储地方:
Node.js的Formidable模块的使用
1) 创建Formidable.IncomingForm对象 var form = new formidable.IncomingForm() 2) form.encoding = ‘utf-8‘ 设置表单域的编码 3) form.uploadDir = "/my/dir"; 设置上传文件存放的文件夹,默认为
系统的临时文件夹,可以使用fs.rename()来改变上传文件的存放位置和文件名 4) form.keepExtensions = false; 设置该属性为true可以使得上传的文件保持原来的文件的扩展名。 5) form.type 只读,根据请求的类型,取值‘multipart‘ or ‘urlencoded‘ 6) form.maxFieldsSize = 2 * 1024 * 1024; 限制所有存储表单字段域的大
小(除去file字段),如果超出,则会触发error事件,默认为2M 7) form.maxFields = 1000 设置可以转换多少查询字符串,默认为1000 8) form.hash = false; 设置上传文件的检验码,可以有两个取值‘sha1‘ or ‘md5‘. 9) form.multiples = false;
开启该功能,当调用form.parse()方法时,回调函数
的files参数将会是一个file数组,数组每一个成员是一个File对
象,此功能需要 html5中multiple特性支持。 10) form.bytesReceived 返回服务器已经接收到当前表单数据多少字节 11) form.bytesExpected 返回将要接收到当前表单所有数据的大小 12) form.parse(request, [callback])
该方法会转换请求中所包含的表单数据,callback会
包含所有字段域和文件信息,如: form.parse(req, function(err, fields, files) { // ... }); 13) form.onPart(part); 你可以重载处理multipart流的方法,这样做的话会禁止field和
file事件的发生,你将不得不自己处理这些事情,如: form.onPart = function(part) { part.addListener(‘data‘, function() { // ... }); } 如果你只想让formdable处理一部分事情,你可以这样做: form.onPart = function(part) { if (!part.filename) { // 让formidable处理所有非文件部分 form.handlePart(part); } } 14) formidable.File对象 A. file.size = 0
上传文件的大小,如果文件正在上传,表示已上传部分的大小 B. file.path = null
上传文件的路径。如果不想让formidable产生一个临时
文件夹,可以在fileBegain事件中修改路径 C. file.name = null 上传文件的名字 D. file.type = null 上传文件的mime类型 E. file.lastModifiedDate = null 时间对象,上传文件最近一次被修改的时间 F. file.hash = null 返回文件的hash值 G. 可以使用JSON.stringify(file.toJSON())来格式化输出文件的信息 15) form.on(‘progress‘, function(bytesReceived, bytesExpected) {});
当有数据块被处理之后会触发该事件,对于创建进度条非常有用。 16) form.on(‘field‘, function(name, value) {});
每当一个字段/值对已经收到时会触发该事件 17) form.on(‘fileBegin‘, function(name, file) {});
在post流中检测到任意一个新的文件便会触发该事件 18) form.on(‘file‘, function(name, file) {});
每当有一对字段/文件已经接收到,便会触发该事件 19) form.on(‘error‘, function(err) {});
当上传流中出现错误便会触发该事件,当出现错误时,若想要继续触发request的
data事件,则必须手动调用request.resume()方法 20) form.on(‘aborted‘, function() {});
当用户中止请求时会触发该事件,socket中的timeout和close事件也会触发该事
件,当该事件触发之后,error事件也会触发 21) form.on(‘end‘, function() {});
当所有的请求已经接收到,并且所有的文件都已上传到服务器中,
该事件会触发。此时可以发送请求到客户端
------------------------ 引用 http://www.mamicode.com/info-detail-1676091.html
elementUi + express 上传图片的更多相关文章
- node+express上传图片到七牛
本人微信公众号:前端修炼之路,欢迎关注 最近做项目的时候有一个上传图片的需求,由于没有后端的配合,所以决定自己来搭个服务器,实现上传图片功能.以后如果需要修改成java或者php为后端,直接使用即可, ...
- node+express上传图片
注意: 别用multer 上传文件了,太坑了,普通文本获取不到,折腾了半天没有解决,最后采用 multiparty 解决了: <!DOCTYPE html><html> < ...
- express上传图片
var express = require('express') var app = express() var proxy = require('http-proxy-middleware') co ...
- vue element-ui 组件上传图片 以及对 图片的 宽高 和 大小 格式等 做出限制
vue 文件: 自行引用 elemen-ui <el-upload action=" 让后端给你上传地址 " ...
- vue element-ui 组件上传图片 之后 对上传按钮 进行隐藏,删除之后重新显示
注:如果在当前的 vue 文件里 写了 style 样式,得 去除 scoped [私有属性必须去除,不能保留](这个是重点,不去除不生效), template 部分 <el-upload ...
- 改造vue-quill-editor: 结合element-ui上传图片到服务器
前排提示:现在可以直接使用封装好的插件vue-quill-editor-upload 需求概述 vue-quill-editor是我们再使用vue框架的时候常用的一个富文本编辑器,在进行富文本编辑的时 ...
- 如何用elementui去实现图片上传和表单提交,用axios的post方法
下面是在vue搭建的脚手架项目中的组件component文件夹下面的upload.vue文件中的内容 <!--这个组件主要用来研究upload这个elementui的上传插件组件--> & ...
- 基于.NetCore开发博客项目 StarBlog - (10) 图片瀑布流
系列文章 基于.NetCore开发博客项目 StarBlog - (1) 为什么需要自己写一个博客? 基于.NetCore开发博客项目 StarBlog - (2) 环境准备和创建项目 基于.NetC ...
- express实现前后端通信上传图片,存储数据库(mysql)傻瓜教程(三)完结篇
终于完成了所有自己想要的功能(鼓励下自己),虽然还是很简陋,但是还是挺有满足感的,哈哈. 附上前两篇的链接: 第一篇 第二篇 进入正题,在第二篇里面已经完成了连接数据库,并且实现了对数据库的增删改查, ...
随机推荐
- Leetcode算法比赛----First Unique Character in a String
问题描述 Given a string, find the first non-repeating character in it and return it's index. If it doesn ...
- C++学习笔记(2)----模板
1. 与其他任何类相同,我们既可以在类模板内部,也可以在类模板外部为其定义成员函数,且定义在类模板内的成员函数被隐式声明为内联函数. 2. 默认情况下,对于一个实例化了的类模板,其成员只有在使用时才被 ...
- 简单使用git上传代码
1,首先在github上面创建一个仓库 2,在本地目录中右击,选择git bash 3,将github上的仓库克隆到本地目录,(这个就是您的仓库) git clone https://github.c ...
- Java 之字符串(7)
什么是 Java 中的字符串 在程序开发中字符串无处不在,如用户登陆时输入的用户名.密码等使用的就是字符串.其实,在前面的章节中我们就已经使用了字符串, 例如我们在控制台中输出的 "Hell ...
- 辅助判卷程序的一些小bug
首先谈一下,double类型 之前查过一些资料,double类型做==(相等)判断时候,会出现一些错误,及61.95与61.95不相等 对main函数中的部分加以改正,下面的answer为string ...
- 使用元数据简化jdbc代码---查询操作(用到反射)
使用元数据简化jdbc代码---查询操作(用到反射) 一 思路分析 简化就是把共同的地方提取出来并放到一个方法里,在用到时只要调用就ok了,上一篇介绍了更新的操作,而查询的操作相对来说比较复杂,因为 ...
- 一点二次插值、二点二次插值 ,matlab
syms f x a b c; f(x)=3*x^4-4*x^3-12*x^2; q(x)=a*x^2+b*x+c; %二点二次插值 x=[-1.2 -0.8]; ff=diff(diff(f)); ...
- Salesforce平台支持多租户Multi tenant的核心设计思路
Multitenancy is the fundamental technology that clouds use to share IT resources cost-efficiently an ...
- Python ,pickle
@Python pickle模块学习 pickle提供了一个简单的持久化功能.可以将对象以文件的形式存放在磁盘上. ---------------------------------------- ...
- 一篇文章详解iOS之AutoResizing、AutoLayout、sizeClass来龙去脉
前言 iPhone自诞生以来,随着其屏幕尺寸不断的多样化,屏幕适配的技术一直在发展更新.目前,iOS系统版本已经更新到9.3,XCode的最新版本已经是7.3,仅iPhone历史产品的尺寸就已经有4种 ...