移動端檔案、圖片及拍照上傳
需求:移動端點選圖片觸發上傳圖片或檔案或拍照上傳。
檔案上傳
<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
- Ueditor上傳圖片自動新增水印(通用圖片檔案)
- H5拍照上傳填坑彙總H5
- Ueditor 上傳圖片自動新增水印(只能上傳圖片,上傳檔案報錯)
- 移動端使用localResizeIMG4壓縮圖片並上傳
- 移動端圖片優化總結優化
- PHP實現圖片(檔案)上傳PHP
- [外掛擴充套件]移動端多圖片上傳外掛uploadimages套件
- 圖片上傳及圖片處理
- 淺談移動端圖片壓縮(iOS & Android)iOSAndroid
- FileReader()讀取檔案、圖片上傳預覽
- 移動端圖片等比例縮放實踐
- 上傳封面圖片前臺不顯示 Picture檔案裡可以看到上傳的圖片
- css在移動端常遇到的檔案CSS
- SpringMvc上傳圖片及表單提交(單檔案+實體類引數提交)SpringMVC
- Springboot 遷移及上傳檔案至阿里雲OSSSpring Boot阿里
- 在silverlight中利用socket傳送圖片或檔案
- 移動檔案
- Java上傳檔案到遠端伺服器和瀏覽器預覽圖片Java伺服器瀏覽器
- [筆記]laravel的上傳檔案或者圖片的方法筆記Laravel
- 利用webuploader外掛上傳圖片檔案,完整前端示例demo,服務端使用SpringMVC接收Web前端服務端SpringMVC
- 前端圖片壓縮及上傳前端
- [Laravel Admin] 檔案 / 圖片上傳功能之擴充套件 -- 上傳新圖且保留原圖Laravel套件
- 移動端如何實現長按儲存圖片(圖片上的二維碼是動態的)?
- Spring Boot MVC 單張圖片和多張圖片上傳 和通用檔案下載Spring BootMVC
- 多檔案斷點續傳,上傳視訊自動轉MP4和截圖,圖片格式轉換斷點
- 移動端H5頁面生成圖片解決方案H5
- 移動端長按儲存、取消長按儲存圖片
- 一個基於canvas的移動端圖片編輯器Canvas
- thinkphp5 後臺上傳圖片提示 image null 非法上傳檔案PHPNull
- AJAX資料互動及檔案上傳功能
- 線上直播原始碼,js 檔案上傳 圖片上傳 傳輸速度計算原始碼JS
- angular上傳圖片到.netcore後端AngularNetCore後端
- el-upload拍照上傳多個檔案報錯 ERR_UPLOAD_FILE_CHANGED問題
- vue移動端專案接入vconsole(移動端除錯)Vue除錯
- 圖片寫入pdf檔案
- JavaScript實戰專案:移動端 Touch 輪播圖JavaScript
- (H5)canvas實現裁剪圖片和馬賽克功能,以及又拍雲上傳圖片H5Canvas