<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多图或者单图上传的更多相关文章

  1. Laravel5多图上传和Laravel5单图上传的功能实现

    Laravel5文件上传默认只能上传一张图片,但是有的时候我们需要一次性上传多图就不行了,我在网上看了很多关于laravel5图片上传的文章,很多都只是介绍laravel5单图上传,多图片上传介绍少之 ...

  2. js formData图片上传(单图上传、多图上传)后台java

    单图上传 <div class="imgUp">     <label>头像单图</label>     <input type=&quo ...

  3. mui开发app之多图压缩与上传(仿qq空间说说发表)

    欲实现效果图 提出需求点: 用户可自由添加删除替换多张图片,并且显示相应缩略图,限制为8张 用户可选择压缩图或直接上传原图功能 返回提醒用户会丢失填写的信息 下面一个个实现上述需求,从简单到复杂: 需 ...

  4. UEditor单图上传跨域问题解决方案

    UEditor UEditor是百度团队提供的富文本编辑器 git地址为:https://github.com/fex-team/ueditor 在最近的项目中使用了该插件作为项目的富文本编辑器 由于 ...

  5. 记录一次node中台转发表单上传文件到后台过程

    首发掘金 记录一次node中台转发表单上传文件到后台过程 本篇跟掘金为同一个作者leung   公司几个项目都是三层架构模式即前台,中台(中间层),后台.前台微信端公众号使用vue框架,后台管理前端使 ...

  6. UEditor实现前后端分离时单图上传

    首先,需要下载部署ueditor相关代码,可以参考一篇简单的博客,这里不再赘述: 环境搭建好后,我们先简单使用一下,启动http://web.yucong.com:8080/ueditor/index ...

  7. ajax 异步插入图片到数据库(单图上传)

    其实也没啥  如图: 点击按钮选择图片,选择完成后 无需点击确定 ,自动上传到服务器指定文件夹 然后插入到数据库中. 下面来看看这要代码 index.php <!DOCTYPE HTML> ...

  8. 单图上传预览(uploadpreview )

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. thinkphp 单图上传组建成数组然后追加到一个字段

    //上传的数组字段 $note1 = input('note1'); $note2 = input('note2'); $note3 = input('note3'); $note4 = input( ...

随机推荐

  1. 转:问题解决:The project cannot be built until build path errors are resolved

    转自:http://blog.csdn.net/marty_zhu/article/details/2566299 今天在eclipse里遇到这个问题,之前也遇到过,不过,通过clean一下项目,或者 ...

  2. EventTarge Node Docuement Element HTMLElement 关系

    综述: 可以将其看做是依次继承的关系: Node Node A Node is an interface from which a number of DOM types inherit, and a ...

  3. ubuntu16下面安装vmware tools后仍然未全屏问题

    1.默认下载ubuntu16的iso镜像后,自带的有vmtools.解压 tar -xzvf  VMwareTools-10.0.6-3595377.tar.gz 进入解压目录. 执行:sudo ./ ...

  4. 【Yii系列】错误处理和日志系统

    缘起 跟随上一章的脚步,上一章中,我们主要讲解了在用户发起请求,解析请求,服务器反馈请求以及session的一些知识点,这过程中,难免会遇到一些问题,比方说数据库查询失败,用户输入导致脚本出错,网络问 ...

  5. Spring中的转换器:Converter

    配置spring的配置文件: <bean id="conversionService" class="org.springframework.context.sup ...

  6. 阅读《大道至简第一章》读后感 (java 伪代码)

         通读大道至简第一章愚公移山,可以将其看做一个完整的工程,首先是创建工程的原因,需求:“惩山北之塞,出入之迂”,而后是团队之间的商议:“聚室而谋曰”,然后确定工程的目标:“毕力平险,指通豫南, ...

  7. django从1.7升级到1.9后 提示:RemovedInDjango110Warning

    Django项目,把django从1.7升级到1.9后,大量报错.需要做如下修改. 1,修改urls.py: 在django1.9里,urls的配置不再支持字符串型的路由.需要先import,然后直接 ...

  8. 为什么懂云的IT高手能过得比你好

    盼望着,盼望着,一年一度的国庆7天长假还有不到24小时就到来了.各个部门的同事都已准备好满世界旅行去了. IT 部门各位同事的心还是悬着,信息系统还要持续的运转,对外的网站不能停,假期的线上促销也不能 ...

  9. JavaScript的本地对象、内置对象、宿主对象

    首先解释下宿主环境:一般宿主环境由外壳程序创建与维护,只要能提供js引擎执行的环境都可称之为外壳程序.如:web浏览器,一些桌面应用系统等.即由web浏览器或是这些桌面应用系统早就的环境即宿主环境. ...

  10. Django路由系统---url无命名分组

    django重点之url无命名分组[参数有顺序要求] settigs.py:增加STATICFILES_DIRS静态资源路径配置,名称为创建的文件夹名称 'DIRS': [os.path.join(B ...