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