返回顶部
首页 > 资讯 > 前端开发 > node.js >node.js实现多图片上传实例
  • 689
分享到

node.js实现多图片上传实例

多图实例上传 2022-06-04 17:06:19 689人浏览 安东尼
摘要

先上效果图: 这是我当时做多图片的代码,拿出来给大家借鉴一下(有些地方需要亲们自己改一下,大方向是对的) 总共涉及到三处文件(常规来说) 1.路由入口文件(我这里是/routes.js,很多时候会在/ap

先上效果图:

查看图片

这是我当时做多图片的代码,拿出来给大家借鉴一下(有些地方需要亲们自己改一下,大方向是对的)

总共涉及到三处文件(常规来说)

1.路由入口文件(我这里是/routes.js,很多时候会在/app.js)


//添加美食
app.all('/add', users.add);

2.路由控制器文件(我这里是/routes/users.js)

//添加美食
exports.add = function (req, res) {
if (req.method == "GET") {
var user = {};
if(req.session.user){
user = req.session.user;
}
res.render("users/food_add", {title:'发布美食-'+config.name,name:config.name,user:user});
} else if (req.method == "POST") {
//获取数据
var x = req.body.x;
var y = req.body.y;
var cat_id = req.body.cat_id;
var cat_name = req.body.cat_name;
var address = req.body.address;
var title = req.body.title;
var desc = req.body.desc;
var content = req.body.content;
var pics = '';
var price = req.body.price;
var tags = req.body.tags;
var add_time = Date.parse(new Date())/1000;
var support = 0;
var uid = req.body.uid;

//处理图片上传
//console.dir(req.files);

var file_obj = req.files.pics;
//console.log(file_obj.length);
var file_obj2 = [];
for(var i=0;i<file_obj.length;i++){
if(file_obj[i].name){
file_obj2.push(file_obj[i]);
}
}
var length = file_obj2.length;
if(length>0){
file_obj2.forEach(function(item,index){
if(item.path){
var tmpPath = item.path;
var type = item.type;
var extension_name = "";
//移动到指定的目录,一般放到public的images文件下面
//在移动的时候确定路径已经存在,否则会报错
var tmp_name = (Date.parse(new Date())/1000);
tmp_name = tmp_name+''+(Math.round(Math.random()*9999));
//判断文件类型
switch (type) {
case 'image/pjpeg':extension_name = 'jpg';
break;
case 'image/jpeg':extension_name = 'jpg';
break;
case 'image/gif':extension_name = 'gif';
break;
case 'image/png':extension_name = 'png';
break;
case 'image/x-png':extension_name = 'png';
break;
case 'image/bmp':extension_name = 'bmp';
break;
}
var tmp_name = tmp_name+'.'+extension_name;
var targetPath = 'public/images/' + tmp_name;
console.log(tmpPath);
//将上传的临时文件移动到指定的目录下
fs.rename(tmpPath, targetPath , function(err) {
if(err){
throw err;
}
if(pics){
pics += ','+tmp_name;
}else{
pics += tmp_name;
}
//判断是否完成
//console.log(index);
//删除临时文件
fs.unlink(tmpPath, function(){
if(err) {
throw err;
}else{
if((index+1)==length){
console.log(targetPath);
//上传处理完成
//数据
var data = {
x:x,//经度
y:y,//维度
cat_id:cat_id,//分类id
cat_name:cat_name,//分类名称
address:address,//地址
title:title,//标题
desc:desc,//简介
content:content,//内容
pics:pics,//图片字段,以','隔开多张图片
price:price,//价格
tags:tags,//标签 以','隔开多个
add_time:add_time,//支持度
support:support,//支持度 默认为0
uid:uid//用户id 可匿名
};
food_preDao.insert(data, function (err, food) {
if(err){
res.JSON({err:100,content:'数据库错误'});
}else{
res.json({err:0,content:'发布成功!',data:food});
}

});
}
}
});


});
}
});
}else{
//没有图片
//数据
var data = {
x:x,//经度
y:y,//维度
cat_id:cat_id,//分类id
cat_name:cat_name,//分类名称
address:address,//地址
title:title,//标题
desc:desc,//简介
content:content,//内容
pics:pics,//图片字段,以','隔开多张图片
price:price,//价格
tags:tags,//标签 以','隔开多个
add_time:add_time,//支持度
support:support,//支持度 默认为0
uid:uid//用户id 可匿名
};
food_preDao.insert(data, function (err, food) {
if(err){
res.json({err:100,content:'数据库错误'});
}else{
res.json({err:0,content:'发布成功!',data:food});
}

});
}


}
};


3.视图文件(我这里是/views/users/food_add.ejs)

<style>
.upload_item{ width: 50px; height: 45px; overflow: hidden;border: 2px dashed #bfbfbf; float: left;margin-right: 10px;}
.upload_item_add{ width: 50px; height: 45px; display: block; line-height: 42px; text-align: center; font-size: 30px; cursor: pointer;}
.upload_input{ }
</style>
<script>
var ADD = {
upload_click:function(obj){
$(obj).parent().children().eq(1).click();
},
upload_change:function(obj){
var path;
path=$(obj).val(); //C:Documents and Settingshud桌面AddFile.jpg
var aa;
aa=path.split('.');
//alert(aa[aa.length-1]); //jpg 结果

var name;
name=path.split('\');
var bb=name[name.length-1];
//alert(bb.substr(0,bb.indexOf('.'))); //AddFile 结果

$(obj).parent().children().eq(0).CSS('fontSize','12px');
$(obj).parent().css('borderStyle','solid');
$(obj).parent().children().eq(0).html(bb.substr(0,bb.indexOf('.')));
if($(obj).parent().attr('index')==1){//新增
var html = '<div class="upload_item" index="1"><span class="upload_item_add" onclick="ADD.upload_click(this)">+</span><input type="file" name="pics" id="pics" class="upload_input" onchange="ADD.upload_change(this)" /></div>';
$('#upload_box').append(html);
$(obj).parent().attr('index','0');
}
}
};
</script>
<fORM method="post" action="/add" enctype="multipart/form-data">
<table>
<tr>
<td>经度:</td><td><input type="text" name="x" id="x" /></td>
</tr>
<tr>
<td>维度:</td><td><input type="text" name="y" id="y" /></td>
</tr>
<tr>
<td>分类:</td><td><select name="cat_id"><option value="1">分类1</option></select></td>
</tr>
<tr>
<td>地址:</td><td><input type="text" name="address" id="address" /></td>
</tr>
<tr>
<td>标题:</td><td><input type="text" name="title" id="title" /></td>
</tr>
<tr>
<td>简介:</td><td><input type="text" name="desc" id="desc" /></td>
</tr>
<tr>
<td>内容:</td><td><input type="text" name="content" id="content" /></td>
</tr>
<tr>
<td>图片:</td><td id="upload_box"><div class="upload_item" index="0" style="display:none;"><span class="upload_item_add" onclick="ADD.upload_click(this)">+</span><input type="file" name="pics" id="pics" class="upload_input" onchange="ADD.upload_change(this)" /></div><div class="upload_item" index="1"><span class="upload_item_add" onclick="ADD.upload_click(this)">+</span><input type="file" name="pics" id="pics" class="upload_input" onchange="ADD.upload_change(this)" /></div></td>
</tr>
<tr>
<td>价格:</td><td><input type="text" name="price" id="price" /></td>
</tr>
<tr>
<td>标签:</td><td><input type="text" name="tags" id="tags" /></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="提交" /></td>
</tr>
</table>
</form>


--结束END--

本文标题: node.js实现多图片上传实例

本文链接: https://lsjlt.com/news/11870.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • node.js实现多图片上传实例
    先上效果图: 这是我当时做多图片的代码,拿出来给大家借鉴一下(有些地方需要亲们自己改一下,大方向是对的) 总共涉及到三处文件(常规来说) 1.路由入口文件(我这里是/routes.js,很多时候会在/ap...
    99+
    2022-06-04
    多图 实例 上传
  • 简单实现node.js图片上传
    本文实例为大家分享了node.js图片上传的具体代码,供大家参考,具体内容如下 1.node-formidable 对文件上传提供帮助的组件 2.app.js var formidable = req...
    99+
    2022-06-04
    图片上传 简单 node
  • Node.js: express + MySQL + Vue实现图片上传
            前段时间用Node.js: express + MySQL + Vue + element组件做了一个小项目,记录一下图片上传的实现。         将图片存入数据库有两种方法:                 1,将图片...
    99+
    2023-09-01
    vue.js node.js express
  • ajax +NodeJS 实现图片上传实例
    前台用jquery的ajax发请求,后台用NodeJS 的multer模块实现图片上传。这个demo给我的感悟是一定要自己能实现出来,而不是看了别人写好就直接“拿来”用 note(注意) 大家先在pub...
    99+
    2022-06-04
    图片上传 实例 ajax
  • React+react-dropzone+node.js实现图片上传的示例代码
    本文将会用typescript+react+react-dropzone+express.js实现前后端上传图片。当然是用typescript需要提前下载相应的模块,在这里就不依依介绍了。 第一步...
    99+
    2022-06-04
    示例 图片上传 代码
  • H5如何实现多图片上传
    这篇文章将为大家详细讲解有关H5如何实现多图片上传,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 这篇文章主要介绍了基于HTML5实现多张图...
    99+
    2024-04-02
  • node.js中怎么实现kindEditor图片上传功能
    要在node.js中实现KindEditor的图片上传功能,可以使用以下步骤: 安装express框架和multer模块: np...
    99+
    2024-03-02
    node.js
  • SpringBoot2.0实现多图片上传加回显
    目录上传效果展示配置上传图片的属性异常处理遇到的坑完整代码地址 这两天公司有需求让做一个商户注册的后台功能,其中需要商户上传多张图片并回显。由于之前没做过这方面的东西,此篇文章用以记...
    99+
    2024-04-02
  • Node.js如何实现分片上传
    这篇文章主要介绍了Node.js如何实现分片上传的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Node.js如何实现分片上传文章都会有所收获,下面我们一起来看看吧。大文件上传会...
    99+
    2024-04-02
  • Node.js实现分片上传断点续传示例详解
    目录正文文件的分片与合并并发控制使代码可复用服务端接口实现正文 大文件上传会消耗大量的时间,而且中途有可能上传失败。这时我们需要前端和后端配合来解决这个问题。 解决步骤: 文件分片,...
    99+
    2024-04-02
  • rxjava+retrofit实现多图上传实例代码
    在看了网上多篇rxjava和retrofit的文章后,大概有了一个初步的认识,刚好要做一个多图上传的功能,就拿它开刀吧。下面的内容将基于之前实现方式和使用rxjava实现之间的异同展开,初次写笔记不喜就喷。普通版多图上传由于目前手机照片动辄...
    99+
    2023-05-31
    rxjava retrofit 上传
  • Node.js如何实现图片上传和显示方法
    小编给大家分享一下Node.js如何实现图片上传和显示方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体如下:index.j...
    99+
    2024-04-02
  • 小程序怎么实现多图片上传
    这篇文章主要介绍“小程序怎么实现多图片上传”,在日常操作中,相信很多人在小程序怎么实现多图片上传问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”小程序怎么实现多图片上传”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-26
  • PHP实现多张图片上传功能的示例代码
    首先要知道这个函数 move_uploaded_file(); 接下来是我们的input框,和我们的html页面 这里我们是增加的input框我们也可以写写一个属性  &...
    99+
    2024-04-02
  • Vue+Element+Springboot图片上传的实现示例
    最近没事刚好联系下vue+springboot前段后分离的项目、用上了图片上传功能、记录一下。 前端待提交的表单部分代码 <el-form-item label="封面图片...
    99+
    2024-04-02
  • SpringBoot2.0如何实现多图片上传加回显
    这篇文章主要为大家展示了“SpringBoot2.0如何实现多图片上传加回显”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SpringBoot2.0如何实现多图片上传加回显”这篇文章吧。上传Co...
    99+
    2023-06-20
  • PHP如何实现多张图片上传功能
    这篇文章主要介绍“PHP如何实现多张图片上传功能”,在日常操作中,相信很多人在PHP如何实现多张图片上传功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP如何实现多张图片上传功能”的疑惑有所帮助!接下来...
    99+
    2023-07-02
  • Nodejs+angularjs结合multiparty实现多图片上传的示例代码
    这次我们说一下nodejs+angularjs多图片上传的问题 此前也在网站看了很多篇文章,有关的内容说多不多,说少也不少,但我一一试过以后有成功的,也有没有成功的,折磨了我很长时间,最终也是成功实现了,...
    99+
    2022-06-04
    多图 示例 上传
  • Android Retrofit实现多图片/文件、图文上传功能
    什么是 Retrofit ? Retrofit是Square开发的一个Android和Java的REST客户端库。这个库非常简单并且具有很多特性,相比其他的网络库,更...
    99+
    2022-06-06
    图片 retrofit Android
  • SSH框架实现表单上传图片实例代码
    SSH框架的一个上传到服务器然后显示在页面上的小实例,用的是简单的form表单形式,数据包括图片的url地址保存在数据库中,图片上传到tomcat服务器下的项目文件夹里,然后页面展示图片, 算是好好把上传功能给过了一遍了,当然还有什么H5上...
    99+
    2023-05-31
    ssh 表单 上传
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作