ElementUI PC端图片下载,解决高频率点击下载按钮的问题

高频率点击下载按钮,进而引起下载方法未完成再次高频率触发,导致浏览器阻塞甚至崩溃的问题

下面解决这个问题

<el-button type="primary" :loading="downloading" @click="downloadImg">下载原图</el-button>
downloadImg(){

  this.downloading = true //下载按钮的状态控制

  let x = new XMLHttpRequest();

  x.open("GET", this.downloadObj.cloud_name, true); //图片地址

  x.responseType = 'blob';

  x.onload = (e)=>{

    var url = window.URL.createObjectURL(x.response)

    var a = document.createElement('a');

    a.href = url

    a.download = ''

    a.click()

  }

  x.send();

  //监听onreadystatechange 判断返回值以改变状态(下载完成,恢复可点击状态)

  x.onreadystatechange = ()=>{

    if(x.readyState === 4){ //请求已完成,且响应已就绪

      this.downloading = false //下载状态复原

    }

如此如此,便解决了上述这个问题。

Vue.js中结合Element UI实现文件上传功能,你可以使用Element UI的`el-upload`组件,它是一个非常实用的文件上传组件。首先,你需要在项目中引入`ElUpload`和相关的样式。这里是一个简单的步骤说明: 1. 安装依赖:在`main.js`或`App.vue`的`components`中导入Element UI库,如果你还没安装,可以使用`npm install element-ui@latest`。 ```javascript import ElementUI from 'element-ui'; import 'element-ui/lib/theme-chalk/index.css'; Vue.use(ElementUI); ``` 2. 在模板中创建上传按钮并配置`el-upload`组件: ```html <template> <div> <el-button @click="handleFilePicker">点击上传</el-button> <el-upload :action="uploadUrl" :on-change="handleChange" :on-success="handleSuccess" :auto-upload="false" > <el-input v-model="fileList" placeholder="点击选择图片"> <el-upload-examine /> </el-input> </el-upload> </div> </template> <script> export default { data() { return { fileList: [], uploadUrl: '', // 根据实际服务器API填写 }; }, methods: { handleFilePicker() { this.$refs.fileInput.click(); }, handleChange(file) { this.fileList.push({ name: file.name, url: file.url, }); }, handleSubmit(file) { const formData = new FormData(); formData.append('file', file); axios.post(this.uploadUrl, formData) .then(response => { this.handleSuccess(response.data); }) .catch(error => console.error('Upload failed:', error)); }, handleSuccess(response) { console.log('上传成功', response); }, }, }; </script> ``` 在这个例子中,当用户点击点击上传”按钮时,会触发`handleFilePicker`方法,打开文件浏览器选择图片。`handleChange`会在每次选择文件后更新`fileList`。当用户确认上传时,`handleSubmit`会被调用,并通过axios发送POST请求到服务器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值