javascript html5移動端輕鬆實現檔案上傳,html5輕鬆實現

來源:互聯網
上載者:User

javascript html5移動端輕鬆實現檔案上傳,html5輕鬆實現

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部分:

<?phpif (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代碼
  • Servlet+Jsp實現圖片或檔案的上傳功能具體思路及代碼
  • 一個簡單的jQuery外掛程式ajaxfileupload.js實現ajax上傳檔案例子
  • Nodejs+express+html5 實現拖拽上傳
  • ajaxFileUpload.js外掛程式支援多檔案上傳的方法
  • 原生JavaScript實現非同步多檔案上傳
  • js HTML5 Ajax實現檔案上傳進度條功能

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.