javascript html5移动端轻松实现文件上传_javascript技巧

PC端上传文件多半用插件,引入flash都没关系,但是移动端要是还用各种冗余的插件估计得被喷死,项目里面需要做图片上传的功能,既然H5已经有相关的接口且兼容性良好,当然优先考虑用H5来实现。

用的技术主要是:

  • ajax
  • FileReader
  • FormData

HTML结构:

<div class="camera-area">
   <form enctype="multipart/form-data" method="post">
    <input type="file" name="fileToUpload" class="fileToUpload" accept="image/*" capture="camera"/>
     <div class="upload-progress"><span></span></div>
    </form>
   <div class="thumb"></div>
 </div>

已经封装好的upload.js,依赖zepto

(function($) {
 $.extend($.fn, {
  fileUpload: function(opts) {
   this.each(function() {
    var $self = $(this);
    var doms = {
     "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);

调用方法:

$(".camera-area").fileUpload({
    "url": "savetofile.php",
    "file": "myFile"
   });

PHP部分:

<?php
if (isset($_FILES['myFile'])) {
  // Example:
  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);
}
?>

希望本文所述对大家学习有所帮助。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索js
, html5文件上传
javascript文件上传
轻松上传easytrans、轻松筹首页推荐技巧、轻松做仰卧起坐的技巧、轻松搞笑的聊天技巧、轻松筹怎么上传图片,以便于您获取更多的相关知识。

时间: 2024-12-26 18:33:20

javascript html5移动端轻松实现文件上传_javascript技巧的相关文章

Javascript使用uploadify来实现多文件上传_javascript技巧

使用uploadify来实现文件上传能够客户端判断文件大小.控制文件上传的类型.实现多文件上传.显示进度条等功能,方便易用,兼容性较好. 本例是把dwz中整合uploadify功能抽取出来的,可以进行单独使用,不一定要遭dwz中才能使用,本例只是为了测试,所以使用静态页面进行测试: 话不多说,代码敬上: 2,html页面的代码 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html&g

基于javascript html5实现多文件上传_javascript技巧

本文实例为大家分享了javascript html5实现多文件上传的实现方法,具体内容如下 HTML结构: <div class="container"> <label>请选择一个图像文件:</label> <input type="file" id="file_input" multiple/> </div> 顺便说下这个上传的主要逻辑: 用input标签并选择type=file,记得

原生JavaScript实现异步多文件上传_javascript技巧

这是在上篇的修改版本.后台代码不变就可以接着使用,但是脚本不再使用jQuery了,改为原生的JavaScript 代码,所以我们主要看JS代码. 先介绍一下技术参数: 页面技术:HTML5 后台技术:Servlet 3.0 服务器:Tomcat 7.0 脚本:JavaScript HTML5 file组件的新属性 accept : 如果在file组件中增加这个属性就可以直接控制上传的文件类型了,实在是很方便. multiple:是否允许选择多个文件HTML5 页面代码修改后 <img width

Javascript使用SWFUpload进行多文件上传_javascript技巧

SWFUpload可以说是目前最好的多文件上传工具之一,虽然它是基于flash插件开发的,但是相比目前很多js多文件上传还是具有很多优点: 可以同时选择多个文件上传(注意是以此选择文件) 无刷新上传 可以显示进度条 良好的浏览器兼容性 兼容其他js类库 SWFUpload另个优点就是它优秀的设计,它提供了一组简明的JavaScript事件,借助它们开发者可以方便的在文件上传过程中更新页面的内容. 下面是SWFUpload在具体使用过程中js代码 MultiFileHandler.js funct

使用plupload自定义参数实现多文件上传_javascript技巧

1.在开发中可能需要用户附件上传的功能,实现批量上传功能其实就将多个上传任务放到一个集合中,分别上传. 2,使用plupload js插件可以很轻松的实现带参数的多文件上传 3.具体js实现方式 <script type="text/javascript"> var map={};//文件id为key,文件类型为value的集合 // Custom example logic var uploader = new plupload.Uploader({ runtimes :

使用Web Uploader实现多文件上传_javascript技巧

引入资源 使用Web Uploader文件上传需要引入三种资源:JS, CSS, SWF. <!--引入CSS--> <link rel="stylesheet" type="text/css" href="webuploader文件夹/webuploader.css"> <!--引入JS--> <script type="text/javascript" src="webu

artDialog+plupload实现多文件上传_javascript技巧

Plupload简介 Plupload是有TinyMCE的开发者开发的,为您的内容管理系统或是类似上传程序提供一个高度可用的上传插件.Plupload 目前分为一个核心API 和一个jQuery上传队列部件,这样使你可以直接使用或是自己定制. 一.效果展示 包括文件上传面板以及文件上传列表 二.介绍 长话短说,采用spring springMVC mybatis maven mysql,实现多文件上传功能,下载使用的是流的形式. 其中涉及的分页我会另开一片博客介绍. 三.准备材料 pluploa

使用PHP和HTML5 FormData实现无刷新文件上传教程_php实例

无刷新文件上传是一个常见而又有点复杂的问题,常见的解决方案是构造 iframe 方式实现. 在 HTML5 中提供了一个 FormData 对象 API,通过 FormData 可以方便地构造一个表单请求,并通过 XMLHttpRequest 来发送.通过 FormData 对象发送文件也是可以的,如此则无刷新上传就变的非常简单了. 1. 构造 FormData 对象 想得到一个FormData对象,很简单: var fd = new FormData(); FormData 对象只提供了一个方

HTML5 FormData 与无刷新文件上传例子

无刷新文件上传是一个常见而又有点复杂的问题,常见的解决方案是构造 iframe 方式实现. 在 HTML5 中提供了一个 FormData 对象 API,通过 FormData 可以方便地构造一个表单请求,并通过 XMLHttpRequest 来发送.通过 FormData 对象发送文件也是可以的,如此则无刷新上传就变的非常简单了. 那么 FormData 怎么使用呢?下面志文工作室对此进行简单的介绍. 1. 构造 FormData 对象 想得到一个FormData对象,很简单: var fd