今天遇到一个需求,就是要实现拖拽上传文件,并调用渲染方法,将渲染后的链接通过二维码展示出来。
上一篇文章也是关于拖拽上传,但是接口是通过后端提供的上传方式来实现的,并非是直接调用阿里OSS来直接实现的。
1.拖拽上传
实现方法参考:
antd上传组件upload+阿里oss实现上传功能:http://t.csdn.cn/wffiO
直接借用文章中的第二步骤即可
2.复制内容到剪切板——vue-clipboard2
插件的使用
2.1 安装插件vue-clipboard2
npm install --save vue-clipboard2
2.2 在main.js
中引入依赖
import VueClipboard from 'vue-clipboard2'
Vue.use(VueClipboard)
2.3 直接通过this.$copyText
来复制内容
handleCopy(val) {
this.$copyText(val)
.then(() => {
this.$message.success('复制成功')
})
.catch(() => {
this.$message.success('复制失败')
})
},
2.4 渲染的方法:主要是记录一下步骤,接口需要后端提供才可以
渲染可能有延迟,因此需要重复去渲染,直到渲染成功为止
getfilePathMd5(filepath, callback) {
getFileDetail({
filePath:filepath
}).then(res=>{
this.filePathMd5 = res.filePathMd5;
callback && callback(res.filePathMd5);
})
},
getFileLookUrl(data) {
this.n+=1;
getFileTaskstatus(data).then(res=>{
this.lookUrlParam = res;
})
},
handleRender(){
if(!this.form.file){
this.$message.error('请输入文件路径或网址');
return
}
this.loading = true;
this.getfilePathMd5(this.form.file, (data)=> {
this.getFileLookUrl(data)
})
this.n = 0;
this.timerT = setInterval(()=> {
if(this.lookUrlParam.previewURL)
{
this.loading = false;
}
if ((!this.lookUrlParam.previewURL||!this.lookUrlParam.imgURL) && this.n <= 30) {
this.getFileLookUrl(this.filePathMd5)
} else {
clearInterval(this.timerT);
this.n = 0;
this.loading = false;
}
}, 3000)//每隔3秒调用一次,直到调用30次后,如果还是没有渲染出来,则直接不再循环渲染。
}
完成!!!多多积累,多多收获!!!