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( ...
随机推荐
- Java设计模式—备忘录模式
个人感觉备忘录模式是一个比较难的设计模式,备忘录模式就是一个对象的备份模式,提供了一种程序数据的备份方法. 定义如下:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以 ...
- .NET开源工作流RoadFlow-流程设计-流程步骤设置-事件设置
事件设置是设置当前步骤在提交前后或退回前后要执行的一些操作(该事件为服务器事件). 事件格式为:dll名称.命名空间名称.类名.方法名,这里不需要写括号和参数,处理时会自动带上当前流程实例的相关参数. ...
- MATLAB简易验证码识别程序介绍
本推文主要识别的验证码是这种: 第一步: 二值化 所谓二值化就是把不需要的信息通通去除,比如背景,干扰线,干扰像素等等,只剩下需要识别的文字,让图片变成2进制点阵. 第二步: 文字分割 为了能识别出字 ...
- C#默认OrderBy()函数的排序问题
昨天在客户现场遇到一个很奇葩的问题,猜下下面代码的排序输出是什么: static void Main() { List<", "1:"}; foreach(stri ...
- 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)
问题描述: 有时候使用 apt-get 终端提示这样的错误信息: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用) E: 无法锁定管理目录(/var/lib/ ...
- TF-IDF与余弦相似性的应用:找出相似文章
"找出相似文章"的一种算法: 利用TF-IDF算法,找出两篇文章的关键词. 每篇文章若干个关键词的相对词频. 生成两篇文章各自的词频向量. 计算两个向量的余弦相似度,值越大就表示越 ...
- mysql错误:Statement violates GTID consistency
在MYSQL中,执行建表语句时CREATE TABLE aaaa AS SELECT * FROM menu; 报: 错误代码: 1786Statement violates GTID cons ...
- 加装固态硬盘SSD
参考:http://tieba.baidu.com/p/4224078869 1.首先拆开后盖,取出机械硬盘,把固定框换到固态盘上,把机械盘安装到硬盘托架上. 装上固态硬盘,然后把光驱位的塑料壳子拆下 ...
- Java BigDecimal初探
更新时间:2016-03-17 一.引言 <Effactive Java>中有这样的描述:float和double类型的主要设计目标是为了科学计算和工程计算.他们执行二进制浮点运算,这是为 ...
- 高可用web框架
nginx nginx简介 Nginx是一个自由.开源.高性能及轻量级的HTTP服务器及反转代理服务器.Nginx以其高性能.稳定.功能丰富.配置简单及占用系统资源少而著称. Nginx 超越 Apa ...