node多图或者单图上传
<form id="form" enctype="multipart/form-data"> <input type="text" name="name" id="name" value="" /> //单图上传的时候name值也必须为img[] 不然后台接收数据的时候不是数组 还需要if处理 否则后台for循环就会报错
<input type="file" name="img[]" id="img" value="" multiple="multiple"/> <button type="button">提交</button> </form> $("button").click(function(){ var Data = new FormData($("#form")[0]); $.ajax({ type:"post", url:"/admin/updata", data:Data, contentType:false, //取消帮我们格式化数据,是什么就是什么 processData:false, dataType:'json', success:function(data){ } }) })
var multipart = require('connect-multiparty'); var multipartMiddleware = multipart(); router.post('/updata',multipartMiddleware, function(req, res, next) { res.clearCookie('data_img'); console.log(req.body, req.files); var id=req.body.id var img=req.files.img var list_img=[] var k=0 img.forEach(function(item){ var filepath=item.path var filename=item.originalFilename if(filename){ fs.readFile(filepath,function(err,data){ var t = (new Date()).getTime(); var type=item.type.split("/")[1] var newname=t+'.'+type var m='/upload1/' + newname var newpath = path.join(__dirname, '../','public/upload1/'+newname); fs.writeFile(newpath,data,function(err){ if(id){ Banner.update({ _id: id }, {img:m}, function(err,data) { console.log(data) if(err) { var data = {code: 0,messege: '数据更新失败'} } else { list_img.push({img:m}) var data = {code: 1,messege: '数据更新成功',data:list_img} } res.send(data); }) }else{ var banner = new Banner({ img: m }) banner.save(function(err,retult){ // console.log(retult) list_img.push(retult) k++ if(k==img.length){ var data = {code: 1,messege: '上传成功',data:list_img} res.send(data); } }) } }) }) } }) })
<form enctype="multipart/form-data"> <h2 class="title">banner上传</h2> <ul class="row"> <% banner.forEach(function(item){ %> <li class="col-sm-3"> <div class="box"> <img src="<%= item.img%>"> <p class="glyphicon glyphicon-trash bg-danger delete"></p> <input type="file" name="img[]" id="<%= item._id%>" value=""/> </div> </li> <% }); %> <li class="col-sm-3"> <div class="box"> <img src="/images/timg.jpg"> <input type="file" name="img[]" value="" multiple="multiple"/> </div> </li> </ul> </form> $("input").change(function(){ var id=$(this).attr("id") console.log(id) var formData = new FormData(); for (var i=0;i<$(this)[0].files.length;i++) { formData.append("img[]",$(this)[0].files[i]);//循环遍历把文件对象插到formData对象上 } if(id){ formData.append("id", id) var obj=$(this)[0].files[0] var img=window.URL.createObjectURL(obj); $(this).siblings("img").attr("src",img) } $.ajax({ type:"post", url:"/admin/updata11", data:formData, dataType:'json', contentType: false,//使用multer配合ajax时无需配置multipart/form-data,multer将自动配置,手动配置将报错,boundary not found processData: false, success:function(data){ console.log(data) alert(data.messege) var html='' var data=data.data if(!id){ data.forEach(function(item){ html+= `<li class="col-sm-3"> <div class="box"> <img src="${item.img}"> <p class="glyphicon glyphicon-trash bg-danger delete"></p> <input type="file" name="img[]" id="${item._id}%>" value=""/> </div> </li>` }) $("form ul").prepend(html) } } }) })
node多图或者单图上传的更多相关文章
- Laravel5多图上传和Laravel5单图上传的功能实现
Laravel5文件上传默认只能上传一张图片,但是有的时候我们需要一次性上传多图就不行了,我在网上看了很多关于laravel5图片上传的文章,很多都只是介绍laravel5单图上传,多图片上传介绍少之 ...
- js formData图片上传(单图上传、多图上传)后台java
单图上传 <div class="imgUp"> <label>头像单图</label> <input type=&quo ...
- mui开发app之多图压缩与上传(仿qq空间说说发表)
欲实现效果图 提出需求点: 用户可自由添加删除替换多张图片,并且显示相应缩略图,限制为8张 用户可选择压缩图或直接上传原图功能 返回提醒用户会丢失填写的信息 下面一个个实现上述需求,从简单到复杂: 需 ...
- UEditor单图上传跨域问题解决方案
UEditor UEditor是百度团队提供的富文本编辑器 git地址为:https://github.com/fex-team/ueditor 在最近的项目中使用了该插件作为项目的富文本编辑器 由于 ...
- 记录一次node中台转发表单上传文件到后台过程
首发掘金 记录一次node中台转发表单上传文件到后台过程 本篇跟掘金为同一个作者leung 公司几个项目都是三层架构模式即前台,中台(中间层),后台.前台微信端公众号使用vue框架,后台管理前端使 ...
- UEditor实现前后端分离时单图上传
首先,需要下载部署ueditor相关代码,可以参考一篇简单的博客,这里不再赘述: 环境搭建好后,我们先简单使用一下,启动http://web.yucong.com:8080/ueditor/index ...
- ajax 异步插入图片到数据库(单图上传)
其实也没啥 如图: 点击按钮选择图片,选择完成后 无需点击确定 ,自动上传到服务器指定文件夹 然后插入到数据库中. 下面来看看这要代码 index.php <!DOCTYPE HTML> ...
- 单图上传预览(uploadpreview )
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- thinkphp 单图上传组建成数组然后追加到一个字段
//上传的数组字段 $note1 = input('note1'); $note2 = input('note2'); $note3 = input('note3'); $note4 = input( ...
随机推荐
- LeetCode赛题394----Decode String
394. Decode String Given an encoded string, return it's decoded string. The encoding rule is: k[enco ...
- 验证两台机器已经建立的ssh互信
1.expect方法 #!/bin/bash checkTrust() { expect -c ' set timeout 2; spawn ssh $1 "expr 12345678 + ...
- 爬虫day03之scrapy安装与使用
参考博客 技术问题不要问,业务问题可以问是不是有一种更好的方法? scrapy windows安装 1. 安装scrapy 参考博客 https://www.cnblogs.com/wupeiqi/a ...
- [翻译] MJParallaxCollectionView
MJParallaxCollectionView https://github.com/mayuur/MJParallaxCollectionView This is a parallax for t ...
- 沉淀再出发:关于netty的一些理解和使用
沉淀再出发:关于netty的一些理解和使用 一.前言 Netty是由JBOSS提供的一个java开源框架.Netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速开发高性能.高可靠性的网络服务 ...
- Microsoft Windows XP SP3 官方原版镜像下载,绝对原版加系列号!
转:http://blog.sina.com.cn/s/blog_638c2e010100op5z.html 写在前面:1. VOL是Volume Licensing for Organization ...
- 判断元素(expected_conditions)
判断元素 如何判断一个元素是否存在,如何判断 alert 弹窗出来了,如何判断动态的元素等等一系列的判断,在 selenium 的 expected_conditions 模块收集了一系列的场景判断方 ...
- jq弹框 (1)内容自适应宽度 2(内容框显示,几秒后自动消失)
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&q ...
- Protocols, Generics, and Existential Containers — Wait What?
For the longest time now, I thought that the two functions above were the same. But in actuality, wh ...
- BZOJ1014:[JSOI2008]火星人(Splay,hash)
Description 火星人最近研究了一种操作:求一个字串两个后缀的公共前缀.比方说,有这样一个字符串:madamimadam, 我们将这个字符串的各个字符予以标号:序号: 1 2 3 4 5 6 ...