前端js实现图片上传的原理是通过input标签的type=file属性将input标签定义为上传文件,对input进行onchange事件的监听,当input的value值改变时代表用户已经上传了图片,而input的value值就是用户上传的图片的相对路径,new一个FileReader对象,将图片转换成base64格式的编码,动态创建img标签并将转换后的编码赋值给img标签的src属性即可。
首先,进行页面布局,页面布局是用的浮动布局。
[html]  view plain  copy
  1. <div class="content clearFlex">
  2. <form action="" enctype="multipart/form-data">
  3. <div class="upImg clearFlex">
  4. <div class="imgOnloadWrap"></div>
  5. <div class="upWrap">
  6. <div class="fileWrap">
  7. <input type="file" accept="image/gif,image/jpeg,image/jpg,image/png,image/svg" onchange="upImg(this)"/>
  8. </div>
  9. <div class="imgWrap">
  10. <img src="img/icon6.png" alt="" />
  11. </div>
  12. </div>
  13. </div>
  14. </form>
  15. </div>

其次对页面布局进行样式设计

[css]  view plain  copy
  1. .content{
  2. width:1000px;
  3. height: 800px;
  4. background:#fff;
  5. border-radius:10px;
  6. padding:10px;
  7. overflow-y: scroll;
  8. margin:0 auto;
  9. border:1px solid #333;
  10. border-color:rgba(169,169,169,1);
  11. }
  12. .upWrap{
  13. width:140px;
  14. height: 80px;
  15. margin:10px;
  16. float: left;
  17. position: relative;
  18. }
  19. .upWrap > .fileWrap,.upWrap > .fileWrap > input[type=file],.upWrap > .imgWrap{
  20. position: absolute;
  21. height: 100%;
  22. width:100%;
  23. top:0;
  24. left:0;
  25. }
  26. .upWrap > .fileWrap > input[type=file]{
  27. z-index: 2;
  28. opacity: 0;
  29. }
  30. .upWrap > .imgWrap{
  31. z-index: 1;
  32. }
  33. .upWrap > .imgWrap > img{
  34. width:100%;
  35. height: 100%;
  36. }
  37. .upedImg{
  38. z-index: 3 !important;
  39. }
  40. .upedImg > span.deleteImg{
  41. position:absolute;
  42. content: 'X';
  43. width:20px;
  44. font-size: 16px;
  45. color:#ff0000;
  46. background:rgba(0,0,0,0.6);
  47. height:20px;
  48. text-align: center;
  49. line-height: 20px;
  50. right:0;
  51. top:0;
  52. z-index:4;
  53. }
  54. .clearFlex:after{
  55. clear: both;
  56. content: '';
  57. display: block;
  58. height: 0;
  59. zoom:1;
  60. }

最后对上传图片进行逻辑交互

[javascript]  view plain  copy
  1. /*------------------------------上传图片---------------------------*/
  2. function upImg(obj){
  3. var imgFile = obj.files[0];
  4. console.log(imgFile);
  5. var img = new Image();
  6. var fr = new FileReader();
  7. fr.onload = function(){
  8. var htmlStr = '<div class="upWrap">';
  9. htmlStr += '<div class="fileWrap">';
  10. htmlStr += '<input type="file" accept="image/gif,image/jpeg,image/jpg,image/png,image/svg" οnchange="upImg(this)"/>';
  11. htmlStr += '</div>';
  12. htmlStr += '<div class="imgWrap upedImg"><span class="deleteImg">X</span>';
  13. htmlStr += '<img src="'+fr.result+'" alt="" />';
  14. htmlStr += '</div>';
  15. htmlStr += '</div>';
  16. $('.imgOnloadWrap').append(htmlStr);
  17. obj.value = '';
  18. }
  19. fr.readAsDataURL(imgFile);
  20. }
  21. /*-----------------------------删除图片------------------------------*/
  22. $(document).on('click','.upedImg .deleteImg',function(){
  23. //处理未来事件
  24. $(this).parent().parent().remove();
  25. })
[html]  view plain  copy
  1. <div class="content clearFlex">
  2. <form action="" enctype="multipart/form-data">
  3. <div class="upImg clearFlex">
  4. <div class="imgOnloadWrap"></div>
  5. <div class="upWrap">
  6. <div class="fileWrap">
  7. <input type="file" accept="image/gif,image/jpeg,image/jpg,image/png,image/svg" onchange="upImg(this)"/>
  8. </div>
  9. <div class="imgWrap">
  10. <img src="img/icon6.png" alt="" />
  11. </div>
  12. </div>
  13. </div>
  14. </form>
  15. </div>

其次对页面布局进行样式设计

[css]  view plain  copy
  1. .content{
  2. width:1000px;
  3. height: 800px;
  4. background:#fff;
  5. border-radius:10px;
  6. padding:10px;
  7. overflow-y: scroll;
  8. margin:0 auto;
  9. border:1px solid #333;
  10. border-color:rgba(169,169,169,1);
  11. }
  12. .upWrap{
  13. width:140px;
  14. height: 80px;
  15. margin:10px;
  16. float: left;
  17. position: relative;
  18. }
  19. .upWrap > .fileWrap,.upWrap > .fileWrap > input[type=file],.upWrap > .imgWrap{
  20. position: absolute;
  21. height: 100%;
  22. width:100%;
  23. top:0;
  24. left:0;
  25. }
  26. .upWrap > .fileWrap > input[type=file]{
  27. z-index: 2;
  28. opacity: 0;
  29. }
  30. .upWrap > .imgWrap{
  31. z-index: 1;
  32. }
  33. .upWrap > .imgWrap > img{
  34. width:100%;
  35. height: 100%;
  36. }
  37. .upedImg{
  38. z-index: 3 !important;
  39. }
  40. .upedImg > span.deleteImg{
  41. position:absolute;
  42. content: 'X';
  43. width:20px;
  44. font-size: 16px;
  45. color:#ff0000;
  46. background:rgba(0,0,0,0.6);
  47. height:20px;
  48. text-align: center;
  49. line-height: 20px;
  50. right:0;
  51. top:0;
  52. z-index:4;
  53. }
  54. .clearFlex:after{
  55. clear: both;
  56. content: '';
  57. display: block;
  58. height: 0;
  59. zoom:1;
  60. }

最后对上传图片进行逻辑交互

[javascript]  view plain  copy
  1. /*------------------------------上传图片---------------------------*/
  2. function upImg(obj){
  3. var imgFile = obj.files[0];
  4. console.log(imgFile);
  5. var img = new Image();
  6. var fr = new FileReader();
  7. fr.onload = function(){
  8. var htmlStr = '<div class="upWrap">';
  9. htmlStr += '<div class="fileWrap">';
  10. htmlStr += '<input type="file" accept="image/gif,image/jpeg,image/jpg,image/png,image/svg" οnchange="upImg(this)"/>';
  11. htmlStr += '</div>';
  12. htmlStr += '<div class="imgWrap upedImg"><span class="deleteImg">X</span>';
  13. htmlStr += '<img src="'+fr.result+'" alt="" />';
  14. htmlStr += '</div>';
  15. htmlStr += '</div>';
  16. $('.imgOnloadWrap').append(htmlStr);
  17. obj.value = '';
  18. }
  19. fr.readAsDataURL(imgFile);
  20. }
  21. /*-----------------------------删除图片------------------------------*/
  22. $(document).on('click','.upedImg .deleteImg',function(){
  23. //处理未来事件
  24. $(this).parent().parent().remove();
  25. })

前端js实现图片上传相关推荐

  1. 手机端移动端的前端原生js裁剪图片上传

    手机端移动端的前端原生js裁剪图片上传 选择头像时裁剪上传,确保图片是个正方形,不会出现压扁拉伸的现象 效果图 原理很简单,其实就是用canvas截图出来而已,只是要对比例做一下处理. <!-- ...

  2. 如何上传图片到fileupload空间_如何用原生js写图片上传组件v2.0(还有新版本)?...

    js图片上传组件: 基本要求: 1.上传的图片可预览,可删除,可被覆盖更新 2.要求图片格式为jpg和png,大小不能超过2M 新加需求: 1.模拟回显,可用本地存储(实际上的回显是通过后台传过来的u ...

  3. js实现图片上传预览及进度条

    js实现图片上传预览及进度条 原文js实现图片上传预览及进度条 最近在做图片上传的时候,由于产品设计的比较fashion,上网找了比较久还没有现成的,因此自己做了一个,实现的功能如下: 1:去除浏览器 ...

  4. js实现图片上传预览功能

    js实现图片上传预览功能 很多业务场景下,我们需要在用户上传图片前,先预览待上传的图片 <body><input type="file"><img s ...

  5. node.js实现图片上传

    两步走战略: 将图片上传到服务器 将图片的路径保存到数据库 图片上传到服务器 下载第三方插件multer npm install multer --save 先写一个上传图片的接口 在路由文件夹中创建 ...

  6. JS画板图片上传到服务器Python

    上次实验了图片上传方式把客户端图片保存到服务器的方法 这次经过实验实现了画板图片直接上传到服务器并保存的方法 只要验证了几个概念 js端:base64传送,json传送,XMLHttpRequest, ...

  7. node.js实现图片上传(包含缩略图)

    图片上传 使用multiparty插件实现上传 安装multiparty npm i --save multiparty 代码实现 const multiparty = require('multip ...

  8. 关于editor网页编辑器ueditor.config.js 配置图片上传

    最近公司项目在做一个门户网站,其中新闻和简介等部分使用到了ueditor编辑器,但是上级明确指示需要图片上传这个功能,这时却发现图片上传功能不能正常使用,上传时一直报错,网上收了好几个处理办法,都说的 ...

  9. js 自定义图片上传

    转载于:选择文件的js方法 - 蛙仔 - 博客园 let fileInputEle; let fileInputHandlerDefer = {};// 选择文件 export const getFi ...

最新文章

  1. R使用abline()函数在图中添加额外的直线
  2. UNIX环境编程学习笔记(11)——文件I/O之文件时间以及 utime 函数
  3. 计算机组成原理精品课程申报书,【计算机科学与技术专业】【毕业设计】计算机组成原理精品课程平台的设计与实现...
  4. PowerShell学习笔记(1)-基础
  5. MySQL FIND_IN_SET(s1,s2) 返回在字符串s2中与s1匹配的字符串的位置
  6. BZOJ 3224 Treap
  7. eclipse中自定义videoview类_android控件之VideoView建立自己的播放器
  8. jenkins自动部署配置
  9. 客户和顾客是一个意思吗_履约保证金和投标保证金是一个意思吗?
  10. 一道哈夫曼二叉树题目--稍微容易一点
  11. response 设置头的类型 (转)
  12. 2021-04-26
  13. ecshop ectouch 不支持html,ECShop上传的商品图片在ECTouch不能显示,怎么解决
  14. HTML5开发实战之网易微博
  15. 【知识积累】Edge vs Fog Computing 边缘计算和雾计算的相同与不同
  16. 两种MBR分区表恢复方法
  17. cv::HOGDescriptor compute()错误的参数设置导致free(): corrupted unsorted chunks错误
  18. Dynamical Isometry and a Mean Field Theory of CNNs
  19. 微信公众号和微信小程序进程名获取及配置
  20. 单片机中的上电复位 和手动复位

热门文章

  1. 安卓开发笔记(十一)—— 方向传感器,实现摇一摇动画音效,GPS定位
  2. Linux之有趣的命令行
  3. element-icon 图标大全
  4. 阿里巴巴淘宝全链路性能优化(上)
  5. 氢原子角向概率密度分布matlab,求氢原子角向概率密度.PPT
  6. 网络社区中的相关概念
  7. 遇到类似问题不急手机维修知识与技巧
  8. Docker遇到的一些问题
  9. python爬取淘票票正在热映电影
  10. 宝宝大脑发育差异背后肠道菌群的故事