vue上传

2021-07-21 09:55

阅读:855

标签:button   iconfont   imp   启动   author   task   rtti   logo   load()   

action="#"
:limit="limitNum"
:auto-upload="true"
:before-upload="handleBeforeUpload"
>
icon="iconfont icon-play-circle"
class="upload-excel"
type="button"
>
本地导入启动

 

// import HelloWorld from ‘./components/HelloWorld.vue‘
import COS from "cos-nodejs-sdk-v5"

export default {
name: ‘App‘,
components: {
// HelloWorld
},

data () {
return {
expiredTime: 0,
expiration: "",
credentials: {sessionToken:"",tmpSecretId:"",tmpSecretKey:""},
requestId:"",
startTime:0
}
},
methods: {

// 封面上传
async uploadImg () {
// 创建COS实例 获取签名
//这里写你们后端提供的请求接口即可
const res = await this.$axios.get(‘http://127.0.0.1:8000/sts‘)
console.log("credentials----",data);
// console.log(JSON.parse(res.data.data))
//这里是因为我们后端返回的是一组JSON字符串,所以进行了一次转化,如果你们直接返回的就是json对象,直接忽略即可
const data = JSON.parse(res)

const cos = new COS({
// 必选参数
getAuthorization: (options, callback) => {
const obj = {
TmpSecretId: data.credentials.tmpSecretId,
TmpSecretKey: data.credentials.tmpSecretKey,
XCosSecurityToken: data.credentials.sessionToken,
StartTime: data.startTime, // 时间戳,单位秒,如:1580000000
ExpiredTime: data.expiredTime // 时间戳,单位秒,如:1580000900
}
callback(obj)
}
})
// 上传图片 其中Bucket 和 Region找你们负责人拿
//key 在前面加上路径写法可以生成文件夹
cos.putObject({
Bucket: ‘srcb-test-1304747370‘, /* 必须 */
Region: ‘ap-shanghai‘, /* 存储桶所在地域,必须字段 */
Key: ‘/excel/‘ + new Date().getTime() + this.fileName, /* 必须 */
StorageClass: ‘STANDARD‘,
Body: this.imgFile.raw, // 上传文件对象
onProgress: progressData => {
console.log(JSON.stringify(progressData))
}
}, (err, data) => {
// 将上传后的封面进行路径拼接保存到本地
console.log(err || data)
const url = ‘https://‘ + data.Location
// console.log(url)
this.imgURL = url
})
},
submitUpload() {
this.$refs.upload.submit();
},
handleRemove(file, fileList) {
console.log(file, fileList);
},
handlePreview(file) {
console.log(file);
},
handleBeforeUpload (file) {
const splitName = file.name.split(‘.‘);
const maxSize = file.size / 1024 / 1024
if (splitName[splitName.length - 1] !== ‘xls‘ && splitName[splitName.length - 1] !== ‘xlsx‘) {

this.$message.warning(‘上传文件只能是 xls、xlsx格式!‘);
return;
}
if (!maxSize) {
this.$message.warning(‘上传文件大小不能超过 5MB!‘);
}
setTimeout(() => {
this.uploadExcel(file);
}, 500);
return false;// 返回false不会自动上传
},

async uploadExcel (file) {
let fileFormData = new FormData();
//input_excel是键,后台要求的字段,file是值,就是要传的文件
fileFormData.append(‘input_excel‘, file); //打印这里是空的不要慌就是正确的
console.log("send file")
const resp = await this.$axios.post(‘api/offline-task-from-excel‘,fileFormData);
if(resp.status===‘success‘){
this.$message.success(resp.message);
}
}

}
}


#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;
}

vue上传

标签:button   iconfont   imp   启动   author   task   rtti   logo   load()   

原文地址:https://www.cnblogs.com/bigc008/p/15030198.html


评论


亲,登录后才可以留言!