js上传图片预览

前端页面

<!--单图上传 start-->
<input type="file" accept="image/*" onchange="uploadImg(event,this)">
<!--单图上传 end--><!--多图上传 start-->
<input type="file" multiple accept="image/*" onchange="uploadImg()">
<!--多图上传 end-->

单图片上传js

var URL = window.URL || window.webkitURL || window.mozURL/*** 上传预览图片*/function uploadImg(file, currentObj) {if (file.files && file.files[0]) {var reader = new FileReader()reader.onload = function(evt) {file.base64 = evt.target.resultvar formFile = new FormData()// 获取当前dom文件属性var fileObj =currentObj instanceof HTMLElement? currentObj.files[0]: $(currentObj)[0].files[0]formFile.append('key', uploadFileKey)formFile.append('file', fileObj) //加入文件对象var data = formFile$.ajax({url: uploadFileUrl,data: data,type: 'POST',dataType: 'json',cache: false, //上传文件无需缓存processData: false, //用于对data参数进行序列化处理 这里必须falsecontentType: false, //必须success: function(result) {console.log(result)$(currentObj).siblings('input[type=hidden]').val(result.info.url)},error: function(err) {console.log(err)}})var tmpImg ='<img src="'+URL.createObjectURL(dataURItoBlob(file.base64)) +'" />';$(currentObj).siblings('.upload-list').empty().append(tmpImg).addClass('updateImg')}reader.readAsDataURL(file.files[0])}}

demo代码

<title>单图上传预览</title><style>.preview {width: 200px;height:200px;}.preview img {width: 100%;}</style>
</head>
<body><div class="container"><input type="file" accept="image/*" onchange="uploadImg(event,this)"><div class="preview"></div></div><script>var URL = window.URL || window.webkitURL || window.mozURLfunction uploadImg(e,dom) {var e = event || evar fileObj =dom instanceof HTMLElement? dom.files[0]: $(dom)[0].files[0]console.log(e)console.log(dom)var container = document.querySelector('.preview')var img = new Image()img.src = URL.createObjectURL(fileObj)img.onload = function() {container.appendChild(img)}}</script></body>

多图上传js

用vue写的,换成普通方法即可用

等同于

uploadImg:function(e){}   =>  function uploadImg(e){}
 uploadImg: function(e) {if(!this.maxImgLength) {return}var _this = thisvar files = e.target.files || e.dataTransfer.filesvar imgArr = []for(var i = 0; i < files.length; i++) {// fixme: 这里有一个作用域的问题,选择多张图片会只显示最后onload的一张图片// 用闭包方法修复(function(file){// console.log('file', file)if(!/^image/.test(file.type)) {$.alert('', '必须上传图片格式')return}var reader = new FileReader()var formData = new FormData()reader.onload = function() {file.base64 = this.resultformData.append('key', uploadFileKey)formData.append('file', file)// console.log(formData)// $.showLoading('玩命上传中')_this.imgPreview.push(URL.createObjectURL(file))// console.log('this.preview', _this.imgPreview)_this.postFile(formData).then(function(res) {// $.hideLoading()_this.imgList.push(res.info)// console.log(_this.imgList)})}reader.readAsDataURL(file)})(file[i])}
},
postFile: function(formData) {// console.log(formData)return new Promise(function(resolve, reject) {$.ajax({type: "POST",url: apiList.ossUpFile,processData: false,contentType: false,data: formData,dataType: "json",success: function (resp) {resolve(resp)}});})
}

demo代码

待更新

js上传图片并实现预览相关推荐

  1. vue本地上传并预览php,vue.js 实现图片本地预览 裁剪 压缩 上传功能

    以下代码涉及 Vue 2.0 及 ES6 语法. 目标 纯 javascrpit 实现,兼容ie9及以上浏览器,在本地做好文件格式.长宽.大小的检测,减少浏览器交互. 现实是残酷的,为了兼容Ie9 还 ...

  2. EasyUI上传图片,前台预览,后台读取

    背景 Spring MVC + EasyUI 前台上传图片,并预览 下面是jsp的内容,form表单 java <form id="upload_form" enctype= ...

  3. java 上传图片,图片预览,2种方法

    java 上传图片,图片预览,2种方法 1. 方法一:将图片上传到特定磁盘 html页面,form表单内容: <div class="layui-form-item"> ...

  4. 手机端html5展示pdf,pdf.js移动端展示预览打开pdf-pdfh5.js

    pdf.js移动端展示预览打开pdf-pdfh5.js 本插件基于pdf.js和jQuery,可手势捏合缩放,支持懒加载(即分段加载). 2019.07.18更新:增加npm install pdfh ...

  5. OSS上传图片无法在线预览的解决方案

    OSS上传图片无法在线预览的解决方案 参考文章: (1)OSS上传图片无法在线预览的解决方案 (2)https://www.cnblogs.com/tian874540961/p/12058544.h ...

  6. php手机端多图预览上传,JS实现多图预览上传的实例代码

    这篇文章主要介绍了JS实现多张图片预览同步上传功能的相关资料,需要的朋友可以参考下 废话不多说了,直接给大家贴代码了,具体代码如下所示: /** * Created by liujing on 201 ...

  7. 使用pdf.js在移动端预览pdf文档

    pdf.js 是一个技术原型主要用于在 HTML5 平台上展示 PDF 文档,无需任何本地技术支持. 在线演示地址:http://mozilla.github.com/pdf.js/web/viewe ...

  8. 模仿微信朋友圈 图片浏览 js javascript 支持图片预览,滑动切换,双指缩放,图片缓存

    模仿微信朋友圈 图片浏览 js javascript 支持图片预览,滑动切换,双指缩放,图片缓存 2017年08月10日 12:11:38 阅读数:2311 previewImage-mobile 仿 ...

  9. 【iframe结合pdf.js实现pdf的预览/下载及打印功能】

    iframe结合pdf.js实现pdf的预览/下载及打印 1.[下载pdf.js](http://mozilla.github.io/pdf.js/getting_started/#download) ...

最新文章

  1. ValueError: Variable rnn/basic_rnn_cell/kernel already exists, disallowed. Did you mean to set reuse
  2. 脑源(brainsourcing)技术可以自动识别人类的偏好
  3. 【Leetcode | 13】56. 合并区间
  4. 数据还是模型?人类知识在深度学习里还有用武之地吗?
  5. 对小程序框架WePY的精简总结
  6. canon l11121e驱动_佳能L11121e驱动官方下载-佳能Canon L11121e打印机驱动4.8.0.16 官方版-东坡下载...
  7. c/c++:STL之Binary search
  8. python123监考系统可以识别_在线考试系统的视频监考怎么防作弊?
  9. 1996年考研数学一解析pdf
  10. 基于java jsp的大学生奖学金管理系统
  11. 如何下载风云卫星数据?
  12. Godot Engine:用着色器实现通过开关隐藏部分模型
  13. C++之vector<int> nums
  14. 【非常简单bug管理工具-TAPD 】
  15. 日本华人IT派遣那点事儿(2)
  16. 关于手机设置高对比度文字对app的影响及解决方案
  17. BookKeeper设计介绍及其在Hadoop2.0 Namenode HA方案中的使用分析
  18. 无线局域网CSMA/CA协议
  19. 微信小程序 帮你算月供
  20. 说说jdk和jre的区别和联系?

热门文章

  1. linux技术更新太快了,如何让Ubuntu Linux更快的技巧
  2. 重装 python 环境的伤感
  3. Valine评论之Valine-admin配置攻略
  4. cmake的一些基础知识
  5. html背景色坐标,网页背景颜色与背景设置
  6. 传闻秘密拍摄的魔兽世界电影将于2013年上映
  7. 简易蔬菜大棚监测系统
  8. linux内核之bcache简介
  9. 鸿蒙大陆鸿蒙战凯,鸿蒙大陆7.1正式版
  10. 打通最后一公里!智慧城市生活触手可及