移動端檔案、圖片及拍照上傳
需求:移動端點選圖片觸發上傳圖片或檔案或拍照上傳。
檔案上傳
<a>
<input type="file" ref="file" hidden @change="onInputChange('file')" />
<img src="@/assets/images/uploading-link.png" @click="triggerUpload('file')" />
</a>
首先設定hidden屬性隱藏一個input,input的type屬性設定為檔案,通過img標籤的@click事件觸發input。
//點選圖片觸發檔案上傳
triggerUpload(type) {
let _this = this;
if (this.fileList.length >= this.limit) { //設定上傳數量限制
alert("檔案上傳數量超出限制");
return false;
} else {
this.$refs.file.click();
}
},
//檔案上傳到瀏覽器觸發事件
onInputChange(item) {
let _this = this;
if (item == "file") {
let file = this.$refs.file.files[0];
if (file.size > this.size) { //設定檔案大小限制
alert("檔案太大無法上傳");
return false;
}
_this.fileUpload(file, "file"); //觸發上傳事件
},
//檔案上傳
fileUpload(file, type) {
let _this = this;
let form = new FormData();
let url = _this.url;
//獲取當前token
let token = "Bearer " + window.localStorage.getItem("access_token");
let myHeaders = { Authorization: token };
//更新檔案取消上傳的source
source = CancelToken.source();
form.append("file", file);
Axios.post("/檔案上傳介面", form, {
cancelToken: source.token,
headers: myHeaders,
})
.then((res) => {
_this.onSuccessDefault(res, file, type); //上傳成功執行成功回撥函式
})
.catch(function (error) {
if (Axios.isCancel(error)) {
console.log("Request canceled", error.message);
}
_this.onErrorDefault(error);
});
},
//預設執行的上傳成功回撥函式
onSuccessDefault(res, file, type) {
var _this = this;
console.log("file:", file);
if (res.data.code == "000000") {
_this.$Message.success("上傳成功!");
var fileInfo = {
fileName: res.data.resultBody.fileName,
opTime: res.data.resultBody.optime,
filePath: res.data.resultBody.ftpUrl,
fileSize: (file.size/1024).toFixed(2)+"KB",
};
_this.fileList.push(fileInfo);
} else {
};
},
//預設異常執行邏輯
onErrorDefault(error) {
console.log("error", error);
this.$Message.error("上傳失敗");
},
最後將fileList和表單一起提交。
圖片上傳和拍照上傳
過程與檔案上傳相同,圖片上傳設定 accept=“image/",拍照上傳設定 accept="image/” 外,設定 capture="camera"來觸發移動端拍照上傳。
<a>
<input type="file" ref="photo" hidden @change="onInputChange('photo')" accept="image/*" />
<img src="@/assets/images/uploading-img.png" @click="triggerUpload('photo')" />
</a>
<a>
<input type="file" accept="image/*" hidden capture="camera" @change="onInputChange('cameraPhoto')" ref="cameraPhoto" />
<img src="@/assets/images/uploading-photo.png" @click="triggerUpload('cameraPhoto')" />
</a>
相關文章
- 用exfe.js和canvas解決移動端 IOS 拍照上傳圖片翻轉問題JSCanvasiOS
- 移動端圖片上傳元件分享元件
- 移動端圖片開啟及返回客戶端客戶端
- 移動端H5實現圖片上傳H5
- Ueditor上傳圖片自動新增水印(通用圖片檔案)
- 圖片檔案上傳
- H5拍照上傳填坑彙總H5
- 移動端H5圖片上傳的那些坑H5
- Ueditor 上傳圖片自動新增水印(只能上傳圖片,上傳檔案報錯)
- 移動端圖片上傳旋轉、壓縮的解決方案
- 移動端圖片優化總結優化
- Java Socket圖片檔案傳輸Java
- jsp+springmvc實現檔案上傳、圖片上傳和及時預覽圖片JSSpringMVC
- PHP實現圖片(檔案)上傳PHP
- php圖片上傳之檔案安全PHP
- 上傳圖片和檔案出錯!!!
- 圖片上傳及圖片處理
- [外掛擴充套件]移動端多圖片上傳外掛uploadimages套件
- 淺談移動端圖片壓縮(iOS & Android)iOSAndroid
- 移動端圖片等比例縮放實踐
- 利用藍芽來傳送圖片等檔案藍芽
- 上傳封面圖片前臺不顯示 Picture檔案裡可以看到上傳的圖片
- css在移動端常遇到的檔案CSS
- 基於 Vue 的移動端圖片檢視外掛.Vue
- FileReader()讀取檔案、圖片上傳預覽
- Jdon2.5版不能上傳檔案和圖片
- Java上傳檔案到遠端伺服器和瀏覽器預覽圖片Java伺服器瀏覽器
- .net關於高拍儀上傳圖片後的處理
- 移動檔案
- 前端圖片壓縮及上傳前端
- 移動端如何實現長按儲存圖片(圖片上的二維碼是動態的)?
- SpringMvc上傳圖片及表單提交(單檔案+實體類引數提交)SpringMVC
- 移動端長按儲存、取消長按儲存圖片
- 移動端H5頁面生成圖片解決方案H5
- 一個基於canvas的移動端圖片編輯器Canvas
- [筆記]laravel的上傳檔案或者圖片的方法筆記Laravel
- 檔案(圖片)上傳調研: HTML 5 vs. FlashHTML
- C#上傳檔案圖片怎麼判斷格式C#