1. 程式人生 > >Vue呼叫手機相機和相簿以及上傳

Vue呼叫手機相機和相簿以及上傳

元件

<template>
  
    
  <div>
    <input id="upload_file" type="file" style="display: none;" accept='image/*' name="file"  @change="fileChange($event)"/>
    <div class="image-item space" @click="showActionSheet()">
      <div class="image-up"></div>
    </div>
   
    <div class="upload_warp">
      <div class="upload_warp_img">
        <div class="upload_warp_img_div" v-for="(item,index) in imgList">
          <div class="upload_warp_img_div_top">
            <img src="http://114.115.162.39/static/image/x.png" class="upload_warp_img_div_del" @click="fileDel(index)">
          </div>
          <img :src="item.file.src" style="display: inline-block;">
        </div>
        <div class="upload_warp_left" id="upload_warp_left" @click="fileClick()" v-if="this.imgList.length < 6">
          <!--<img src="../assets/upload.png">-->
          <img src="../assets/images/新增圖片.png" class="imgs"/>
        </div>
      </div>

    </div>
   
    <div class="upload_warp_text">
    <span>選中{{imgList.length}}張檔案,共{{bytesToSize(this.size)}}</span>
    </div>
  </div>

</template>

javaScript程式碼

<script type="text/ecmascript-6">
    export default {
        name: "cameras-and-albums",
      data(){
        return{
          imgList: [],
          datas: new FormData(),
          files:0,
          size:0
        }
      },
      methods:{
        //呼叫相簿&相機
        fileClick() {
          $('#upload_file').click();

        },
        //呼叫手機攝像頭並拍照
        getImage() {
          let cmr = plus.camera.getCamera();
          cmr.captureImage(function(p) {
            plus.io.resolveLocalFileSystemURL(p, function(entry) {
              compressImage(entry.toLocalURL(),entry.name);
            }, function(e) {
              plus.nativeUI.toast("讀取拍照檔案錯誤:" + e.message);
            });
          }, function(e) {
          }, {
            filter: 'image'
          });
        },
        //從相簿選擇照片
        galleryImgs() {
          plus.gallery.pick(function(e) {
            let name = e.substr(e.lastIndexOf('/') + 1);
            compressImage(e,name);
          }, function(e) {
          }, {
            filter: "image"
          });
        },
        //點選事件,彈出選擇攝像頭和相簿的選項
        showActionSheet() {
          let bts = [{
            title: "拍照"
          }, {
            title: "從相簿選擇"
          }];
          plus.nativeUI.actionSheet({
              cancel: "取消",
              buttons: bts
            },
            function(e) {
              if (e.index == 1) {
                this.getImage();
              } else if (e.index == 2) {
                this.galleryImgs();
              }
            }
          );
        },
        fileChange(el) {
          this.files=$("#upload_file").get(0).files;
          console.log(this.files.length);
          for(let i=0;i<this.files.length;i++){
            this.datas.append("file",this.files[i]);
          }
          this.show1=false;
          console.log(typeof this.files);
          console.log(this.files);
          if (!el.target.files[0].size) return;
          this.fileList(el.target);
          el.target.value = ''
        },
        fileList(fileList) {
          let files = fileList.files;
          for (let i = 0; i < files.length; i++) {
            //判斷是否為資料夾
            if (files[i].type != '') {
              this.fileAdd(files[i]);
            } else {
              //資料夾處理
              this.folders(fileList.items[i]);
            }
          }
        },
        //資料夾處理
        folders(files) {
          let _this = this;
          //判斷是否為原生file
          if (files.kind) {
            files = files.webkitGetAsEntry();
          }
          files.createReader().readEntries(function (file) {
            for (let i = 0; i < file.length; i++) {
              if (file[i].isFile) {
                _this.foldersAdd(file[i]);
              } else {
                _this.folders(file[i]);
              }
            }
          })
        },
        fileAdd(file) {
          //總大小
          this.size = this.size + file.size;
          //判斷是否為圖片檔案
          if (file.type.indexOf('image') == -1) {
            file.src = 'wenjian.png';
            this.imgList.push({
              file
            });
          } else {
            let reader = new FileReader();
            reader.vue = this;
            reader.readAsDataURL(file);
            reader.onload = function () {
              file.src = this.result;
              this.vue.imgList.push({
                file
              });
            }
          }
        },
        fileDel(index) {
          this.size = this.size - this.imgList[index].file.size;//總大小
          this.imgList.splice(index, 1);
        },
        bytesToSize(bytes) {
          if (bytes === 0){
            return '0 B';
          }
          let k = 1000, // or 1024
            sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],
            i = Math.floor(Math.log(bytes) / Math.log(k));
          return (bytes / Math.pow(k, i)).toPrecision(3) + ' ' + sizes[i];
        },
        dragenter(el) {
          el.stopPropagation();
          el.preventDefault();
        },
        dragover(el) {
          el.stopPropagation();
          el.preventDefault();
        },
        drop(el) {
          el.stopPropagation();
          el.preventDefault();
          this.fileList(el.dataTransfer);
        },
        shows(et,tx){
          this.strut=et;
          this.txt=tx;
        },
        handleClick(){
          this.$store.commit('add')
        },
      },
    }
</script>


相關推薦

Vue呼叫手機相機相簿以及

元件<template> <div> <input id="upload_file" type="file" style="display: none;" accept='image/*' name="file" @

H5 file呼叫手機相機相簿(相容安卓ios,親測有效)

<input id="input" type="file"/>標籤,iOS直接吊起相機拍照或是相簿選擇,但Android中只調起選擇相簿,沒有調起相機拍照 解決辦法: 只需要加上 accept="image/*" 就完美的相容安卓和IOS了(accept表示開啟的系統檔案目錄) <

html5呼叫手機相機並壓縮、

近日剛做的一個功能,要在app裡使用內嵌頁面進行影象的上傳。 從功能上看,原生的實現應該是最好的。畢竟頁面上所有的東西都隔著一個瀏覽器,所有的實現都要依賴瀏覽器提供的介面,不同的瀏覽器對介面的實現又有差異……到最後又會陷入相容性的大坑! 吐槽歸吐槽,但是折騰的勁頭不能丟! 使用input file[

android呼叫系統相機相簿頭像

話說昨天的冰碴下得真心大,騎車回來的路上臉被打的生疼啊!清明小長假第一天,借這個時間把前兩天想記錄的一點內容補充上吧。這篇文章主要記錄呼叫系統相機或者從系統相簿中選取照片然後上傳頭像,這是一個很平常的需求,網上的例子也很多,但是,(注意:前方高能預警!!!)我遇到了一個坑,選

Android呼叫系統相機相簿

拍照和相簿的功能在實際開發中是最常見的功能,這裡記錄下。 準備工作 許可權 1234 <!-- 往SDCard寫入資料許可權 --> <uses-permission android:name="android.permission.WRIT

使用HTML5+呼叫手機攝像頭相簿

例項: 具體流程:點選觸發選擇拍照或相簿-->拍照或相簿選擇照片-->拿到圖片路徑進行壓縮-->讀取檔案並顯示在頁面上 首先是html程式碼,很簡單,就是給一個新增按鈕,點選觸發事件,這裡我就不把css檔案放出來,大家知道是一個新增按鈕就行。 &

呼叫系統相機相簿,並且裁剪成圓形圖片(解決6.0,7.0,8.0版本問題)

之前寫過一篇部落格,那篇部落格對7.0手機裁剪圖片的問題沒有進行解決,現在對之前的那篇部落格進行補充,解決了Android6.0,7.0,8.0版本問題,不僅可以呼叫相簿,相機,還可以將圖片儲存到本地,並且裁剪成圓形圖片 必要的許可權: <uses-permissi

android之 h5呼叫系統相機相簿並顯示

先上html介面的程式碼,放在assets裡面就可以了,我也不太會html,所以隨便寫了點 <!doctype html> <html lang="en"> <head> <meta charset="UT

Android完美呼叫系統相機相簿以及裁剪功能

在 Android應用中,很多時候我們需要實現上傳圖片,或者直接呼叫手機上的拍照功能拍照處理然後直接顯示並上傳功能,下面將講述呼叫相機拍照處理圖片然後顯示和呼叫手機相簿中的圖片處理然後顯示的功能,要想實現上傳功能,一般都是上傳到資料庫中,將imageView中的

【iOS】一個完整的簡單的呼叫系統相機相簿設定頭像

1.Xcode8,iOS10的許可權設定(不設定會崩潰): 找到專案的info.plist檔案,右鍵open As,以Source Code的形式開啟,將以下程式碼新增進去: 相機許可權設定: <key>NSCameraUsageDescription</

iOS圖片處理(一)呼叫系統相機相簿獲取圖片,給相機新增自定義覆蓋物

[摘要:起首,拍照或從相簿挑選照片須要應用 UIImagePickerController,應用時須要增加兩個協定 #import UIKit/UIKit.h @interface ViewContr

HTML5+Canvas+jQuery呼叫手機拍照功能實現圖片(二)

上一篇只講到前臺操作,這篇專門涉及到Java後臺處理,前臺通過Ajax提交將Base64編碼過的圖片資料資訊傳到Java後臺,然後Java這邊進行接收處理,通過對圖片資料資訊進行Base64解碼,之後使用流將圖片資料資訊上傳至伺服器進行儲存,並且將圖片的路徑地址存進資料庫。

html5呼叫手機攝像頭,實現拍照功能

http://www.glve.net/html5-calls-cell-phone-cameras-to-achieve-photo-upload-feature.html 今天做手機網站,想實現手機掃描二維碼功能。首先實現在瀏覽器中呼叫手機攝像頭,實現拍照功能並且把拍下的照片顯示在頁面並上傳到伺服器

開啟安卓手機相簿相機並裁剪圖片到unity

1、建立一個空的安卓工程 2、在unity安裝目錄下找到classes.jar檔案並匯入到工程中的libs資料夾下(classes.jar目錄為:unity安裝目錄\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\il2cpp\Devel

Android學習之呼叫相機相簿

呼叫攝像頭拍照 修改佈局檔案中程式碼: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical"

呼叫系統相機相簿、剪裁圖片並(常用於頭像,相容Android7.0)

轉載請註明出處文章地址 本文轉自Hansion的部落格 由於在Android 7.0 採用了StrictMode API政策禁,其中有一條限制就是對目錄訪問的限制。 這項變更意味著我們無法通過File API訪問手機儲存上的資料,也就是說,給其他應用傳

Unity與IOS互動,呼叫IOS系統相機相簿

前面兩篇總結了一下unity與android的簡單互動和呼叫安卓系統相機和相簿,比較蛋疼的是,後來發現不同的測試機上會有不同的bug。。。下階段要一個一個的解決一下 今天總結一下與IOS的互動。這次我會跳過ios單獨的呼叫相機和相簿的講解,因為我對IOS不專業,講不好,如

iOS呼叫相機相簿 並編輯儲存到本地(個人中心設定頭像)

公司專案需求,需要設定使用者頭像,沒必要用到自定義相機,系統相機完全可以滿足需求,就寫了個小demo測試; 第一步:匯入協議 UINavigationControllerDelegate,UII

Android呼叫系統相機相簿功能,適配6.0許可權獲取以及7.0以後獲取URI(相容多版本)

  Android中呼叫系統相機來拍攝照片的程式碼,如下:1、首先設定Uri獲取判斷以及相機請求Codepublicfinalint TYPE_TAKE_PHOTO = 1;//Uri獲取型別判斷publicfinalint CODE_TAKE_PHOTO = 1;//相機R

Android呼叫相機實現拍照並裁剪圖片,呼叫手機中的相簿圖片並裁剪圖片

在 Android應用中,很多時候我們需要實現上傳圖片,或者直接呼叫手機上的拍照功能拍照處理然後直接顯示並上傳功能,下面將講述呼叫相機拍照處理圖片然後顯示和呼叫手機相簿中的圖片處理然後顯示的功能,要想實現上傳功能,一般都是上傳到資料庫中,將imageView中的圖片取出來然