頭一次用uniapp來作上傳,特別記錄下小程序
前臺選擇圖片就用官方給成的chooseImage就好,點擊以後選擇圖片,而後展現到頁面,最後點擊上傳再執行。比較特別的是app支持多圖上傳,小程序不支持,因此只能循環了。
上傳的圖片每次都push進默認數組,這樣就能夠點擊刪除時完成操做數組
<template> <view class="content"> <view name= "img[]" class="" @click="get_img">點擊上傳</view> <view v-for="(item ,index) in show_img_list" :key="index" > <view class="upload_img_item"> <view class="upload_img_close">X</view> <image :src="item.path" class="upload_img" @click="img_delete(index)"></image> </view> </view> <view @click="do_upload">上傳</view> </view> </template> <script> export default { data() { return { title: 'Hello', show_img_list:[], img_list:[], img_status:false, } }, onLoad() { }, methods: { get_img(){ const _self = this; uni.chooseImage({ count: 9, //默認9 sizeType: ['original', 'compressed'], //能夠指定是原圖仍是壓縮圖,默認兩者都有 sourceType: ['album'], //從相冊選擇 success: function (res) { console.log(JSON.stringify(res.tempFilePaths)); var show_img_list = res.tempFiles; //顯示的圖片 var show_img_list_all = _self.show_img_list; var upload_img_list = res.tempFilePaths; //上傳的圖片 var upload_img_list_all = _self.img_list; //須要顯示的圖片 for(var i = 0;i<show_img_list.length;i++){ var needshow_img_item= show_img_list[i]; _self.show_img_list.push(needshow_img_item); } //處理須要上傳的圖片 for(var i = 0;i<upload_img_list.length;i++){ var needupload_img_item= upload_img_list[i]; _self.img_list.push(needupload_img_item); } } }); }, img_delete(idx){ const self = this; self.img_list.splice(idx,1); self.show_img_list.splice(idx,1);; }, do_upload(){ console.log("do_upload"); const img_list =this.img_list; console.log(img_list); var i=0; for(i;i<img_list.length;i++){ const uploadTask =uni.uploadFile({ url:'服務器接收圖片的地址', filePath: img_list[i], fileType: 'image', name: 'file', formData: { 'user_id':'testssssssss' }, success: (res) => { console.log(res.data) var myurl = JSON.parse( res.data ); console.log(myurl); console.log(myurl.data); } }); } //上傳進度 // uploadTask.onProgressUpdate((res) => { // console.log('上傳進度' + res.progress); // console.log('已經上傳的數據長度' + res.totalBytesSent); // console.log(res); // // 測試條件,取消上傳任務。 // if (res.progress > 50) { // uploadTask.abort(); // } // }); } } } </script> <style> .upload_img_item{ position: relative; } .upload_img_close{ position: absolute; z-index: 999; right: 0; color:#fff; background: #DD524D; } .upload_img{ width: 90px; height: 90px; display: block; } </style>
而後是服務端服務器
public function upload_img() { header("Access-Control-Allow-Origin:*"); header("Access-Control-Allow-Methods:GET, POST, OPTIONS, DELETE"); header("Access-Control-Allow-Headers:DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type, Accept-Language, Origin, Accept-Encoding"); header('Access-Control-Allow-Headers: content-type,token'); $data=$this->request->param();//獲取傳參 $files = $this->request->file('file');//獲取圖片 // 移動到框架應用根目錄/uploads/ 目錄下 $info = $files->move('../public/upload/xcx/');//保存到xcx目錄下 $path = '/upload/xcx/'.date('Ymd',time()).'/'.$info->getFilename();//圖片上傳後的地址 if($info){ // 成功上傳後 獲取上傳信息 echo $info->getExtension(); echo $info->getFilename(); $this->success('請求成功!', $path); }else{ // 上傳失敗獲取錯誤信息 echo $files->getError(); } }