3 changed files with 265 additions and 85 deletions
			
			
		- 
					22src/views/components/upload_img3.vue
- 
					231src/views/components/upload_img4.vue
- 
					95src/views/materialContent/materialList/index.vue
| @ -0,0 +1,231 @@ | |||
| <template> | |||
|   <div class="components_upload"> | |||
|     <!-- <input id="upFile" type="file" name="upFile" @change="changeFile($event)" /> --> | |||
|     <el-button class="cont_upload_btn" round type="primary">上传</el-button> | |||
|     <input id="upFile" type="file" name="upFile" @change="changeFile($event)" /> | |||
|     <!-- <img v-if="coverUrl" :src="coverUrl" alt="封面" /> --> | |||
|     <!-- <el-progress :percentage="filePercent" /> | |||
|     {{ filePercent }} --> | |||
| 
 | |||
|     <!-- 上传列表layer --> | |||
|     <div class="upload_layer"> | |||
|       <!-- width="736px" --> | |||
|       <el-dialog | |||
|         title="上传列表" | |||
|         :close-on-click-modal="false" | |||
|         :show-close="false" | |||
|         :visible.sync="uploadListVisible" | |||
|         height="384px" | |||
|       > | |||
|         <!-- :status="percentage === 100 ? undefined : 'success'" --> | |||
|         <el-table :data="fileData" :header-cell-style="{ color: '#333' }"> | |||
|           <el-table-column align="center" prop="fileNames" label="文件名" /> | |||
|           <el-table-column align="center" prop="formatType" label="类型" /> | |||
|           <el-table-column align="center" prop="fileSize" label="大小" /> | |||
|           <el-table-column align="center" prop="filePercentTxt" label="状态"> | |||
|             <template> | |||
|               <div class="loadingModal" :style="{ 'height': '100%' }"> | |||
|                 <!-- :format="format" --> | |||
|                 <!-- <el-progress | |||
|                   :stroke-width="6" | |||
|                   :percentage="filePercent" | |||
|                   :color="colors" | |||
|                 /> --> | |||
|                 {{ filePercentTxt }} | |||
|               </div> | |||
|             </template> | |||
|           </el-table-column> | |||
|           <el-table-column align="center" prop="handle" label="操作"> | |||
|             <template slot-scope="scope"> | |||
|               <el-button | |||
|                 type="primary" | |||
|                 round | |||
|                 class="on_off_btn" | |||
|                 @click="end(scope.$index, scope.row)" | |||
|               >{{ loading_txt }}</el-button> | |||
|               <el-button | |||
|                 type="info" | |||
|                 round | |||
|                 class="upload_delt" | |||
|                 @click="handleRecord(scope.$index, scope.row)" | |||
|               >删除</el-button> | |||
|             </template> | |||
|           </el-table-column> | |||
|         </el-table> | |||
|         <div class="upload_list_right"> | |||
|           <!-- <el-upload | |||
|             class="upload-demo" | |||
|             action="https://jsonplaceholder.typicode.com/posts/" | |||
|             multiple | |||
|             :limit="3" | |||
|           > | |||
|             <div class="right_upload">点击上传</div> | |||
|           </el-upload> --> | |||
|           <input type="button" name="开始上传" value="开始上传" @click="uploadFile()" /> | |||
|           <div class="upload_return" @click="uploadListVisible=false">返回</div> | |||
|         </div> | |||
|       </el-dialog> | |||
|     </div> | |||
|   </div> | |||
| </template> | |||
| <script> | |||
| import * as qiniu from 'qiniu-js' | |||
| import { getQiniuToken } from '@/api/material/material' | |||
| export default { | |||
|   name: 'Qiniu', | |||
|   data() { | |||
|     return { | |||
|       file: null, | |||
|       token: '', | |||
|       baseurl: 'qiniu.aiyxlib.com', | |||
|       fileData: [], | |||
|       uploadFileUrl: null, | |||
|       filePercent: 0, | |||
|       fileNames: '', | |||
|       formatType: '', | |||
|       postfix: '', | |||
|       fileSize: '', | |||
|       uploadListVisible: false, | |||
|       loading_txt: '暂停', | |||
|       colors: '#1e9f4c', | |||
|       uploadListData: [], | |||
|       filePercentTxt: '上传中' | |||
|     } | |||
|   }, | |||
|   mounted() { | |||
|     this.getQiniuToken() | |||
|   }, | |||
|   methods: { | |||
|     changeFile(e) { | |||
|       // 获取文件 | |||
|       this.file = e.target.files[0] | |||
|       this.formatType = this.file.type.substring(0, this.file.type.indexOf('/')) | |||
|       console.log('formatType', this.formatType) | |||
|       this.fileNames = this.file.name | |||
|       console.log('fileNames', this.fileNames) | |||
|       this.postfix = this.fileNames.substring( | |||
|         this.fileNames.lastIndexOf('.') + 1, | |||
|         this.fileNames.length | |||
|       ) | |||
|       console.log(this.postfix) | |||
|       this.fileSize = this.file.size | |||
|       console.log('fileSize', this.fileSize) | |||
| 
 | |||
|       if (this.formatType === 'image') { | |||
|         const isJPG = this.file.type === 'image/jpeg' || this.file.type === 'image/png' || this.file.type === 'image/bmp' || this.file.type === 'image/gif' | |||
|         const isLt2M = this.file.size / 1024 / 1024 < 4 | |||
|         if (!isJPG) { | |||
|           this.$message.error('图片只支持bmp、jpg、png、gif格式的文件') | |||
|         } | |||
|         if (!isLt2M) { | |||
|           this.$message.error('图片大小不能超过 4MB !') | |||
|         } | |||
|       } | |||
| 
 | |||
|       this.uploadListVisible = true | |||
|       this.fileData.push({ | |||
|         fileNames: this.fileNames, | |||
|         formatType: this.formatType, | |||
|         fileSize: this.fileSize, | |||
|         filePercentTxt: this.filePercentTxt | |||
|       }) | |||
|       console.log(this.fileData[0].filePercent) | |||
|     }, | |||
|     getQiniuToken() { | |||
|       getQiniuToken().then(res => { | |||
|         this.token = res.data | |||
|       }) | |||
|     }, | |||
|     // format(percentage) { | |||
|     //   return percentage === 100 ? '100%' : `${percentage}%` | |||
|     // }, | |||
|     uploadFile() { | |||
|       // 当前VUE中的this 是指向实例,相当于父级,指向指不到子级中。所需需要一个变量 _this 存储this得指向。 | |||
|       const _this = this | |||
| 
 | |||
|       // 获取身份的token | |||
|       const token = _this.token | |||
|       console.log(token) | |||
|       // 上传时的配置 | |||
|       var config = { | |||
|         useCdnDomain: true | |||
|       } | |||
|       //  设置文件的配置 | |||
|       var putExtra = { | |||
|         fname: '', | |||
|         params: {}, | |||
|         mimeType: null | |||
|       } | |||
|       //   实例化七牛云的上传实例 | |||
|       var observable = qiniu.upload(_this.file, _this.file.name, token, putExtra, { resumingByFileSize: 4 * 1024 * 1024 }, config) | |||
|       //   设置实例的监听对象 | |||
|       var observer = { | |||
|         //   接收上传进度信息 | |||
|         next(res) { | |||
|           // 上传进度 | |||
|           console.log(res) | |||
|           console.log(res.total.size) | |||
|           _this.filePercent = parseInt(res.total.percent) | |||
|           console.log(_this.filePercent) | |||
|           this.filePercentTxt = '上传中' | |||
|           if (_this.filePercent == 100) { | |||
|             // _this.fileData.push(_this.filePercent) | |||
|             // _this.fileData.forEach((value, index) => { | |||
|             //   value['filePercent'] = parseInt(res.total.percent) | |||
|             // }) | |||
|             this.filePercentTxt = '上传成功' | |||
|             console.log('success') | |||
|           } | |||
|           console.log(_this.fileData) | |||
|           // _this.fileData[0].filePercent = parseInt(res.total.percent) | |||
|           // console.log(_this.fileData[0].filePercent) | |||
|           // _this.fileData.forEach((value, index) => { | |||
|           //   value['filePercent'] = parseInt(res.total.percent) | |||
|           // }) | |||
|         }, | |||
|         // 接收上传错误信息 | |||
|         error(err) { | |||
|           console.log(err) | |||
|         }, | |||
| 
 | |||
|         // 接收上传完成后的信息 | |||
|         complete(res) { | |||
|           this.filePercentTxt = '上传成功' | |||
|           console.log(res) | |||
|           console.log(res.key) | |||
|           _this.uploadFileUrl = 'http://' + _this.baseurl + '/' + res.key | |||
|           console.log(_this.uploadFileUrl) | |||
|           // console.log(_this.fileUrl.push({ name: _this.file.name, url: _this.fileUrl })) | |||
|           // console.log(_this.fileUrl) | |||
|         } | |||
|       } | |||
|       // 上传开始 | |||
|       var subscription = observable.subscribe(observer) | |||
|       // subscription.unsubscribe()  停止当前文件上传 | |||
|     } | |||
| 
 | |||
|   } | |||
| } | |||
| </script> | |||
| 
 | |||
| <style lang="scss" scoped> | |||
| .components_upload{ | |||
|   position: relative; | |||
|   // width: 100%; | |||
| } | |||
| #upFile{ | |||
|   display: block; | |||
|     width: 114px; | |||
|     height: 34px; | |||
|     padding: 0; | |||
|     font-size: 14px; | |||
|     border: none; | |||
|     opacity: 0; | |||
| } | |||
| .cont_upload_btn{ | |||
|   position: absolute; | |||
|   left: 0; | |||
|   top: 0; | |||
| } | |||
| </style> | |||
| 
 | |||
						Write
						Preview
					
					
					Loading…
					
					Cancel
						Save
					
		Reference in new issue