找了不少文件上传的相关模块,最后选择了比较常用,并且是express推荐使用的 multer 来实现文件上传,附上 GitHub 地址
1. 开始
开始第一步,自然就是安装模块,不多说
npm install multer --save
这里简单说一下,因为文件上传是用 post 方法提交数据,所以上传的单文件或者多文件会作为一个 body 体添加到请求对象中,我们可以通过 req.file 或者 req.files 查看上传后文件的相关信息。
以单文件上传为例,req.file 返回一个对象:
{ "fieldname":"avatar", #前端上传文件input的name "originalname":"Wx.php", #本地文件名 "encoding":"7bit", #文件编码类型 "mimetype":"text/php", #文件类型 "destination":"uploads/", #上传根目录 "filename":"1497286037422Wx.php", #上传后文件名 "path":"uploads/1497286037422Wx.php", #文件路径 "size":18174 #文件大小 }
该对象的 key 值是固定的,velue 值根据配置生成,用于实现相关逻辑
2. 实现
实现分两部分,前端和后端
前端
前端就是普通的写法,form 表单提交
<form action="/test/upload" method="post" enctype="multipart/form-data"> <input type="file" name="avatar"> <input type="submit" name="提交"> </form>
切记,enctype="multipart/form-data" 这个属性一定要加上,否则后台接收不到文件。
后端
首先我们新建配置文件,upload.js
// upload.js var multer = require('multer'); # 引入模块 var storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, 'uploads/') }, filename: function (req, file, cb) { cb(null, Date.now()+file.originalname) } }) var upload = multer({ storage: storage }) module.exports = upload;
diskStorage方法相当于创建一个磁盘存储引擎,配置文件上传路径,文件名等,可控性更高。
destination # 设置文件上传路径 filename # 重命名文件
然后新建路由接收文件,file.js
// file.js var express = require('express'); var router = express.Router(); // 引入配置文件 var upload = require('../config/upload'); router.post('/upload', upload.single('avatar'), function(req, res, next) { res.send(req.file); }); module.exports = router;
file.js 中 upload.single() 方法表示接受单文件,常用的有
upload.single(fname); // 接收单文件 upload.array(fname[, maxCount]) //接收多文件,maxCount表示接收最大数量
fname 是前端 <input type="file" name="fname"> 的 name 值
基本的上传文件方法就这些了,当然还有很多的配置参数之类的设置,要参考 GitHub 说明,地址在开头,需要者自行查阅
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍简单实现js上传文件功能,包括了简单实现js上传文件功能的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了js实现上传文件功能的具体代码,供大家参考,具体内容如下 一、用input完成上传,效果图如 选择文件后,提交后出现图片url 二、传输格式采用form-data形式。 html代码 js部分 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大
本文向大家介绍Servlet实现简单文件上传功能,包括了Servlet实现简单文件上传功能的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Servlet文件上传的具体代码,供大家参考,具体内容如下 两点要素: 1.表单提交方式必须是post 2.enctype一定要是multipart/form-data。 enctype的默认值是application/x-www-form-url
本文向大家介绍django 文件上传功能的相关实例代码(简单易懂),包括了django 文件上传功能的相关实例代码(简单易懂)的使用技巧和注意事项,需要的朋友参考一下 一、新建项目,在主配置文件中,修改以下内容: 在该项目下新建一个与 manage.py 同级的目录文件,目录名为media。 在media文件夹下新建一个子目录,作为上传文件的保存位置,这里我把该子目录命名为headpics。即模拟
本文向大家介绍PHP实现文件上传功能实例代码,包括了PHP实现文件上传功能实例代码的使用技巧和注意事项,需要的朋友参考一下 点击浏览,将所选的文件上传到创建的images文件夹内 代码如下: 1.wenjian.php 2.chuli.php 以上所述是小编给大家介绍的PHP实现文件上传功能实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对呐喊教
本文向大家介绍jquery ajax实现文件上传功能实例代码,包括了jquery ajax实现文件上传功能实例代码的使用技巧和注意事项,需要的朋友参考一下 下面看下ajax实现文件上传 没有使用插件 一、单文件上传 二、多文件上传 这个是多选上传,关键是multiple="multiple"这个属性,另外使用的接口也是多文件上传的接口。 当然也可以使用单文件上传的模式,多次选择就可以了,只
本文向大家介绍java文件上传下载功能实现代码,包括了java文件上传下载功能实现代码的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了文件上传下载java实现代码,供大家参考,具体内容如下 前台: 1. 提交方式:post 2. 表单中有文件上传的表单项: <input type=”file” /> 3. 指定表单类型: 默认类型:enctype="application/x
本文向大家介绍springboot+thymeleaf 文件上传功能的实现代码,包括了springboot+thymeleaf 文件上传功能的实现代码的使用技巧和注意事项,需要的朋友参考一下 pom.xml application.yml index.html 文件上传页面 hello.html 上传成功的页面 controller: 文件上传 测试: 注:目前仅实现了文件的上传 计划补充:文件
本文向大家介绍ajaxfileupload.js实现上传文件功能,包括了ajaxfileupload.js实现上传文件功能的使用技巧和注意事项,需要的朋友参考一下 使用ajaxfileupload.js实现上传文件功能 一、ajaxFileUpload是一个异步上传文件的jQuery插语法:$.ajaxFileUpload([options]) options参数说明: 1、url