HTML5的可预览多图Ajax上传

参考地址:http://www.zhangxinxu.com/wordpress/2011/09/%E5%9F%BA%E4%BA%8Ehtml5%E7%9A%84%E5%8F%AF%E9%A2%84%E8%A7%88%E5%A4%9A%E5%9B%BE%E7%89%87ajax%E4%B8%8A%E4%BC%A0/

  1 <!doctype html>
  2 <html>
  3 <head lang="zh-CN">
  4     <meta charset="UTF-8">
  5     <title>demo</title>
  6     <style>
  7         *{margin: 0;padding :0;}
  8         .wrap{
  9             width: 300px;
 10             margin: 100px auto;
 11         }
 12         .pic{
 13             display: inline-block;
 14         }
 15     </style>
 16 </head>
 17 <body>
 18     <div class="wrap">
 19         <form id="uploadForm" method="post" enctype="multipart/form-data">
 20             <label>图片:</label><input type="file" id="choose_file" multiple>
 21             <br>
 22             <div class="show" id="show">
 23
 24             </div>
 25             <br>
 26             <progress id="uploadprogress" min="0" max="100" value="0">0</progress>
 27             <br>
 28             <br>
 29             <input id="upload" type="button" value="上传图片"/><br><br>
 30         </form>
 31     </div>
 32 <script src="JS/jquery-2.1.1.min.js"></script>
 33 <script>
 34     $(function(){
 35         if(typeof FileReader === ‘undefined‘){
 36             $("body").html("抱歉,你的浏览器不支持 FileReader");
 37             $("input").attr(‘disabled‘, ‘disabled‘);
 38         }
 39         else{
 40             $("#choose_file").on("change", showPic);
 41             $("#upload").on("click", uploadPic);
 42         }
 43     });
 44
 45     //预览图片
 46     function showPic(){
 47         //console.log(this.files[0]);
 48         $("#show").html("");//清空图片
 49         var html = ‘‘;
 50         for (var i = 0, file; file = this.files[i]; i++) {
 51             if(!/image\/\w+/.test(file.type)){
 52                 alert("请确保文件为图像类型");
 53             }
 54             else{
 55                 //console.log(file.name);
 56                 lookPic(file.name);
 57             }
 58         }
 59         function lookPic(name){
 60             var reader = new FileReader();//html5新对象接口
 61             reader.readAsDataURL(file);//将文件读取为DataURL
 62             reader.onload = function(e) {
 63                 html = ‘<div class="pic"><p><strong>‘ + name + ‘</strong>‘+ ‘<br />‘ +
 64                     ‘<img id="uploadImage_‘ + i + ‘" src="‘ + e.target.result + ‘" /></p>‘ +
 65                 ‘</div>‘;
 66                 $("#show").append(html);
 67             }
 68         }
 69
 70     }
 71     //上传图片
 72     function uploadPic(){
 73         if (window.FormData) {
 74             var files = document.getElementById("choose_file").files;
 75             //console.log(files);
 76             var formData = new FormData(); //FormData对象
 77             for (var i = 0; i < files.length; i++) {
 78                 formData.append("files", files[i]);
 79             }
 80             //jQuery版
 81             $.ajax({
 82                 url: "Default.aspx?Action=images",
 83                 type: "POST",
 84                 data: formData,
 85                 dataType: "json",
 86                 processData: false,  // 告诉jQuery不要去处理发送的数据
 87                 contentType: false,   // 告诉jQuery不要去设置Content-Type请求头
 88                 success: function(data) {
 89                     alert("上传成功!");
 90                 },
 91                 error: function(errorMsg) {
 92                     alert("请求数据失败!");
 93                 }
 94             });
 95             //原生js ajax2
 96             var xhr = new XMLHttpRequest();
 97             xhr.onreadystatechange = function() {
 98                 if (xhr.readyState == 4) {
 99                     if (xhr.status == 200) {
100                         alert("上传成功!");
101                     }
102                     else {
103                         alert("上传失败!");
104                     }
105                 }
106             }
107
108             //侦查当前附件上传情况
109             xhr.upload.onprogress = function(evt) {
110                 //侦查附件上传情况
111                 //通过事件对象侦查
112                 //该匿名函数表达式大概0.05-0.1秒执行一次
113                 //console.log(evt);
114                 //console.log(evt.loaded);  //已经上传大小情况
115                 //evt.total; 附件总大小
116                 var loaded = evt.loaded;
117                 var tot = evt.total;
118                 var per = Math.floor(100 * loaded / tot);  //已经上传的百分比
119                 var uploadprogress = document.getElementById("uploadprogress");
120                 uploadprogress.value = per;
121                 uploadprogress.innerHTML = per;
122             }
123             xhr.open("post", "Default.aspx?Action=images");
124             //xhr.setRequestHeader("X_FILENAME", files[i].name);
125             xhr.send(formData);
126         }
127     }
128 </script>
129 </body>
130 </html>
时间: 2024-10-04 18:55:03

HTML5的可预览多图Ajax上传的相关文章

基于HTML5的可预览多图片Ajax上传

一.关于图片上传什么什么的 在XHTML的时代,我们使用HTML file控件上传图片一次只能上传一张.要一次上传多图,做法是借助于flash.例如swfupload.js.可惜,使用复杂的点,比如flash文件需与页面同父文件夹,JavaScript文件大小也很可观. 我之前曾翻译编辑过一篇“Ajax Upload多文件上传插件”的文章,此插件的亮点是使用隐藏的iframe框架页面模拟ajax上传,但是,实际上,还是一次只能上传1张图片,可以多次上传而已. HTML5是个好东东,其中之一就是支

HTML5可预览多图片ajax上传(使用formData传递数据)

在介绍上传图片之前,我们简单的来了解下FormData的基本使用:介绍完成后这些基本知识后,我们会在文章最后提供一个demo,就是ajax多图片上传前预览效果. 1. formData的基本的用法:首先创建一个 空对象实例 代码如下:var formData = new FormData(); 1-1 获取值通过get(key)/getAll(key)来获取对应的value:比如: formData.get("name"); // 获取key为name的第一个值. formData.g

图片预览 base64 element 图片上传 预览图

https://www.jianshu.com/p/bee8c393c422 感谢 使用了element ui,愿望是   选择图片文件之后,不立即上传,先显示预览图,点击上传按钮之后再上传,element版本是2.13 用到了 URL.createObjectURL(file.raw) html <el-upload class="avatar-uploader" action="https://jsonplaceholder.typicode.com/posts/&

H5图片预览、压缩、上传

目标实现: 1.选择图片, 前端预览效果 2.图片大于1.2M的时候, 对图片进行压缩 3.以表单的形式上传图片 4.图片删除 预览效果图: 代码说明: 1.input:file选择图片 <!-- html部分 --> <ul id="preview" class="clear"> <li class="fl"> <img src="/images/audition/icon_upload.pn

html选择图片后预览,保存并上传

html代码: <input type="file" id="file" style="display:none;"> <img src="" width="200px" height="200px" id="img-change"> <button id="btn">保存图片</button> js

vue富文本编辑,编辑自动预览,单个图片上传不能预览的问题解决:

//预览<div class="htmlViewBox"> <p v-html="activity_html_defaultMsg" v-show="htmlDefaultMsg"></p> <p v-show="defaultMsg=='' && htmlDefaultMsg==''">请在富文本编辑器内容</p></div>//编辑器&

js实现图片预览、压缩、上传

先看几个对象:Blob.ArrayBuffer.File.fileReader.formData 详细解释请参考:https://www.cnblogs.com/youhong/p/10875190.html 文件上传必用表单<form></form>: 1.获取表单信息2.转为base643.压缩base64通过canvas4.把base64转为文件对象5.AJAX提交信息 https://blog.csdn.net/Clara_G/article/details/8793685

Java带图片预览功能的图片上传兼容火狐ie

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ

基于HTML5和JSP实现的图片Ajax上传和预览

本文对如何实现使用Ajax提交"multipart/form"格式的表单数据,已经如何在图片上传之前,在浏览器上进行预览.使用的主要相关技术HTML5的FILE API,XMLHttprequest Level2中对二进制文件上传的支持(通过构建FormData对象进行支持)以及Servlet 3.0支持的Multiconfig注解来支持文件的上传.在Servlet 3.0 规范之前通常使用第三方库如commons-fileupload进行解决文件上传. HTML5 中的 File 对