移动端HTML5实现打电话,发短信,发邮件,文件上传
2023-09-14 08:56:48 时间
PC端上传文件多半用插件,引入flash都没关系,但是移动端要是还用各种冗余的插件估计得被喷死,项目里面需要做图片上传的功能,既然H5已经有相关的接口且兼容性良好,当然优先考虑用H5来实现。
用的技术主要是:
ajax
FileReader
FormData
HTML结构:
form enctype="multipart/form-data" method="post" input type="file" name="fileToUpload" accept="image/*" capture="camera"/ div span /span /div /form div /div /div
"fileToUpload": $self.find(".fileToUpload"), "thumb": $self.find(".thumb"), "progress": $self.find(".upload-progress") }; var funs = { //选择文件,获取文件大小,也可以在这里获取文件格式,限制用户上传非要求格式的文件 "fileSelected": function() { var files = (doms.fileToUpload)[0].files; var count = files.length; for (var index = 0; index count; index++) { var file = files[index]; var fileSize = 0; if (file.size 1024 * 1024) fileSize = (Math.round(file.size * 100 / (1024 * 1024)) / 100).toString() + MB; else fileSize = (Math.round(file.size * 100 / 1024) / 100).toString() + KB; } funs.uploadFile(); }, //异步上传文件 uploadFile: function() { var fd = new FormData();//创建表单数据对象 var files = (doms.fileToUpload)[0].files; var count = files.length; for (var index = 0; index count; index++) { var file = files[index]; fd.append(opts.file, file);//将文件添加到表单数据中 funs.previewImage(file);//上传前预览图片,也可以通过其他方法预览txt } var xhr = new XMLHttpRequest(); xhr.upload.addEventListener("progress", funs.uploadProgress, false);//监听上传进度 xhr.addEventListener("load", funs.uploadComplete, false); xhr.addEventListener("error", opts.uploadFailed, false); xhr.open("POST", opts.url); xhr.send(fd); }, //文件预览 previewImage: function(file) { var gallery = doms.thumb; var img = document.createElement("img"); img.file = file; doms.thumb.html(img); // 使用FileReader方法显示图片内容 var reader = new FileReader(); reader.onload = (function(aImg) { return function(e) { aImg.src = e.target.result; }; })(img); reader.readAsDataURL(file); }, uploadProgress: function(evt) { if (evt.lengthComputable) { var percentComplete = Math.round(evt.loaded * 100 / evt.total); doms.progress.html(percentComplete.toString() + %); } }, "uploadComplete": function(evt) { alert(evt.target.responseText) } }; doms.fileToUpload.on("change", function() { doms.progress.find("span").width("0"); funs.fileSelected(); }); }); } }); })(Zepto);
writeLog($_FILES); move_uploaded_file($_FILES[myFile][tmp_name], "uploads/" . $_FILES[myFile][name]); echo successful; } function writeLog($log){ if(is_array($log) || is_object($log)){ $log = json_encode($log); } $log = $log."\r\n"; file_put_contents(log.log, $log,FILE_APPEND); } ?
resumable.js —— 基于 HTML 5 File API 的文件上传组件 支持续传 resumable.js是一个 JavaScript 库,通过 HTML5 文件 API 提供了稳定和可恢复的批量上传功能。在上传大文件的时候将文件分割成小块,每块在上传失败的时候,上传会不断重试直到程序完成。这允许上传到本地或服务器的网络连接丢失后能够自动恢复上传。由于采用了分块技术,它也允许用户暂停和恢复上传。
HTML5文件上传组件的深度剖析 对于文件上传,相信还有不少同学还停留在FLASH时代,其实现在 HTML5 不仅可以实现文件上传,而且可以做得更好。 以下是对 HTML5 与 FLASH 就文件上传方面的功能调研测试得出的结果。
HTML5 FormData实现文件上传实例 原文:HTML5 FormData实现文件上传实例 表单提交,文件上传是一个常用又十分麻烦的功能,以前要上传文件通常都是借助插件或者flash来实现,噼里啪啦的加载一大堆东西。自从有了HTML5的FormData后,老板再也不用担心我的上传了。
html5文件上传 上文介绍了如何通过ajax异步上传文件,html5对file的新接口,可以使得在页面上,对用户也有更好的体验。 页面上要做的,仅仅是添加一个html标签: [cce lang= html ] input id= track name= track type= file multiple
相关文章
- 如何恢复linux系统根分区文件权限
- 在系统下文件上传报错:The temporary upload location [/tmp/tomcat.xxx/work/Tomcat/localhost/ROOT] is not valid
- Total Commander 集成、调用 Beyond Compare比较文件
- 【Docker】解决docker通过volumes挂载文件不生效,修改后容器内数据不同步,需要重启容器才能同步的问题
- CKEditor与CKFinder整合并实现文件上传功能
- 上传文件的demo
- 借助Fiddle使用不同版本的UI5库文件进行测试
- 【SpringBoot笔记12】SpringBoot框架实现文件上传和文件下载
- struts2文件上传
- WEB漏洞攻防 - 文件上传漏洞 - CTF比赛类应用场景 - [RoarCTF 2019]Simple Upload
- MongoDB一个基于分布式文件存储的数据库(介于关系数据库和非关系数据库之间的数据库)
- JavaScript实现拖拽预览,AJAX小文件上传
- leaflet上传gpx文件,导出为geoJson文件(113)
- 08windows系统把docker 镜像保存gz.tar之后,再把gz.tar文件上传至Linux系统,如何用singularity打开docker的tar文件 并保存为sif文件
- PHP上传文件超过了最大文件大小限制导致无法上传成功
- 1.文件上传漏洞简介
- 读入字符存入磁盘文件
- JavaEE——SSM整合商品信息之转换器和文件上传
- ASP.NET MVC (三、表单与文件上传)
- Android开发 8.0及以上调用相机/相册,并根据Uri获取图像绝对路径,并进行文件上传