博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用H5上传文件
阅读量:6973 次
发布时间:2019-06-27

本文共 2393 字,大约阅读时间需要 7 分钟。

//1,第一步读取用户选中的文件function selectedFile(){    var oFile = event.target.files[0];        var fileReader = new FileReader();    fileReader.onload = function(){      var base64URL =  this.result ;      var blob = convertBase64UrlToBlob(base64URL,'image/jpeg');      uploadImage(blob);    }    fileReader.readAsDataURL(oFile)    }//2,第二步将base64图片转换为Blob对象 function convertBase64UrlToBlob(urlData, filetype){            //去掉url的头,并转换为byte            var bytes = window.atob(urlData.split(',')[1]);            //处理异常,将ascii码小于0的转换为大于0            var ab = new ArrayBuffer(bytes.length);            var ia = new Int8Array(ab);            var i;            for (i = 0; i < bytes.length; i++) {                ia[i] = bytes.charCodeAt(i);            }            return new Blob([ab], {type : filetype});}//3,第三步使用formData上传数据function uploadImage(blob){  var formData = new FormData();    formData.append('userProfile',blob);    var xhr = new XMLHttpRequest();    // xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");  // 将参数解析成传统form的方式上传    xhr.open('post', '/upload.php',true);   xhr.onload = fn();//上传成功事件监听   xhr.onerror = fn(); //上传失败事件监听     xhr.send(formData);    }

 

一种更简便的H5上传方式

var change = function(){        var file = event.target.files[0];        var fileReader = new FileReader();        var toBlob = function(a){            return new Blob([a],{type:file.type})        }        fileReader.onload = function(){            var result = this.result;            var blob = new Blob([result],{type:file.type});            var formData = new FormData();            formData.append('userAvatar',blob,file.name);        //添加其他表单字段            formData.append('username',document.getElementById("uname").value)            formData.append('pwd',document.getElementById("upwd").value);            $.ajax({                type:"post",                url:"http://localhost:3000/uploads",                async:true,                processData:false,                contentType:false,                data:formData,                timeout:6000,                success:function (data) {                    console.log('upload success')                },                error:function (xhr,text) {                    if(text === 'timeout'){                        xhr.abort();                    }                }            });        }        fileReader.readAsArrayBuffer(file);    }

 

转载地址:http://ixesl.baihongyu.com/

你可能感兴趣的文章
SPDY 是什么?如何部署 SPDY?
查看>>
WebSocket实现网页聊天室
查看>>
《无人机DIY》——3.2 大疆Phantom 2 Vision+
查看>>
《Flink官方文档》Python 编程指南测试版(二)
查看>>
Linux有问必答:如何在VMware ESXi虚拟机上设置静态MAC地址
查看>>
《Unity 游戏案例开发大全》一6.1 背景以及功能概述
查看>>
《C++代码设计与重用》——2.6 接口一致性
查看>>
《AngularJS高级程序设计》——2.4 小结
查看>>
Spark Streaming + Spark SQL 实现配置化ETL流程
查看>>
算法之冒泡排序
查看>>
袋鼠云成企业服务潜力新星 云市场生态持续发酵
查看>>
synchronized 修饰在 static方法和非static方法的区别
查看>>
如何把握住视频直播的风口,打造安全可靠的视频直播平台
查看>>
jquery.form.js失效问题。
查看>>
jetty 基础
查看>>
码栈开发手册(三)---编码方式开发(高级课程②)
查看>>
Hbase 学习(十) HBase Snapshots
查看>>
记一次8小时惊心动魄的服务器+网站升级
查看>>
too many open files
查看>>
Eclispe清除项目缓存无需删除.metadata文件
查看>>