JS+php后台实现文件上传功能详解
本文实例讲述了JS+php后台实现文件上传功能。分享给大家供大家参考,具体如下:
一、利用FormData对象形式上传
FormData是XMLHttpRequest2的产物,兼容IE10+。
FormData对象,可以把form中所有表单元素的name与value组成一个queryString,提交到后台。在使用Ajax提交时,使用FormData对象可以减少拼接queryString的工作量。
使用FormData对象
1.取得form对象,作为参数传入到FormData对象
html:
js:
varform=document.getElementById('form1'); varformdata=newFormData(form);
2.创建一个FormData空对象,然后使用append方法添加key/value
varformdata=newFormData(); formdata.append('name','fdipzone'); formdata.append('gender','male');
使用FormData提交表单及上传文件实例:
实例1
一般项目中使用的点击上传文件的按钮跟
HTML:
上传
JS:
methods:{ triggerSelect(){ this.$refs.input.click() }, selectedFile(e){ console.log(e.target.files[0]) //根据项目需求做具体处理,比如说获取文件名 }, asyncupload(){ //如果不需要用到上传后的返回值可以把async...await语法去掉 letfiles=this.$refs.input.files; if(files.length>0){ letform=newFormData(); form.append('file',files[0]) letdata=awaitnewPromise((resolve,reject)=>{ axios({ url:'', method:'post', data:form }) .then(res=>{ resolve(res) }) .catch(err=>{ reject(err) }) }) } } }
实例2
FormDataDemo name:
gender:
male female photo:
'; result+='gender='+ret['gender']+'
'; result+='
server.php
带显示图片的上传图片
//--------将以base64的图片url数据转换为Blob-------- functionconvertBase64UrlToBlob(urlData,filetype){ //去掉url的头,并转换为byte varbytes=window.atob(urlData.split(',')[1]); //处理异常,将ascii码小于0的转换为大于0 varab=newArrayBuffer(bytes.length); varia=newUint8Array(ab); vari; for(i=0;i二、base64字符串方式上传图片
base64在线转换网站:http://tools.jb51.net/transcoding/img2base64
DataURI允许在HTML文档中嵌入小文件,可以使用img标签或CSS嵌入转换后的Base64编码,减少HTTP请求,加快小图像的加载时间。经过Base64编码后的文件体积一般比源文件大30%左右。
Base64在CSS中的使用:
.box{ background-image:url("https://www.haoziyuan.ccdata:image/jpg;base64,/9j/4QMZR..."); }Base64在HTML中的使用:
(不推荐用base64,效率慢,消耗流量,占用空间。推荐使用把base64图片格式转换成FormData形式传递)
更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript表单(form)操作技巧大全》、《JavaScript查找算法技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》、《JavaScript错误与调试技巧总结》及《JavaScript数学运算用法总结》
希望本文所述对大家JavaScript程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。