Blob 链接 下载

起因是使用element plus时上传图片的自定义缩略图中有个下载按钮,于是便捣鼓了一下
element plus是将图片转换成 blob:http 在网页上显示的。但是我们要想下载便只能自己想办法了

 <el-upload
          v-model="form.url"
          action="#"
          :file-list="fileList"
          list-type="picture-card"
          :auto-upload="false"
          :on-change="handleChange"
          :before-upload="beforeAvatarUpload"
        >
          <el-icon><i-ep-plus /></el-icon>

          <template #file="{ file }">
            <div>
              <img class="el-upload-list__item-thumbnail" :src="file.url" alt="" />
              <span class="el-upload-list__item-actions">
                <span class="el-upload-list__item-preview" @click="handlePictureCardPreview(file)">
                  <el-icon><i-ep-zoom-in /></el-icon>
                </span>
                <span
                  v-if="!disabled"
                  class="el-upload-list__item-delete"
                  @click="handleDownload(file)"
                >
                  <el-icon><i-ep-download /></el-icon>
                </span>
                <span
                  v-if="!disabled"
                  @click="handleRemove(file)"
                  class="el-upload-list__item-delete"
                >
                  <el-icon><i-ep-delete /></el-icon>
                </span>
              </span>
            </div>
          </template>
        </el-upload>
const handleDownload = (file: UploadFile) => {
  let blob = new Blob([<string>file.url], {
    //这个里面的data 的二进制文件 创建一个文件对象
    type: 'text/plain;charset=utf-8'
  })
  const a = document.createElement('a')
  a.href = URL.createObjectURL(blob)
  a.download = file.name
  a.click()
  URL.revokeObjectURL(a.href)
  a.remove()
}
  • 上面页可以封装一下
function downloadExportFile (res,fileName,type, suffix) {
    const blob = new Blob([res],{type:`application/${type}`});
    const a = document.createElement('a');
    a.href = URL.createObjectURL(blob);
    a.download = fileName + suffix;
    a.click();
    URL.revokeObjectURL(a.href);
    a.remove();
}

完结散花 🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸

Blob图片链接下载是指通过Blob对象的URL来下载图片。Blob(Binary Large Object)是一种二进制数据类型,可以用来存储大量的二进制数据,包括图片、音频、视频等。 要进行Blob图片链接下载,可以按照以下步骤进行操作: 1. 创建一个XMLHttpRequest对象或者使用fetch API来发送HTTP请求。 2. 使用GET方法请求服务器上的图片资源,并设置responseType为"blob",以获取二进制数据。 3. 在请求成功后,将返回的Blob对象转换为URL,可以使用URL.createObjectURL(blob)方法。 4. 创建一个a标签,并设置其href属性为Blob URL。 5. 设置a标签的download属性为图片的文件名,以便用户下载保存为指定的文件名。 6. 将a标签添加到文档中,并模拟击a标签来触发下载。 以下是一个示例代码: ```javascript function downloadImage(url, filename) { // 创建XMLHttpRequest对象 var xhr = new XMLHttpRequest(); xhr.open('GET', url, true); xhr.responseType = 'blob'; xhr.onload = function() { if (xhr.status === 200) { // 获取Blob对象 var blob = xhr.response; // 创建Blob URL var blobUrl = URL.createObjectURL(blob); // 创建a标签并设置属性 var a = document.createElement('a'); a.href = blobUrl; a.download = filename; // 添加a标签到文档中并模拟击 document.body.appendChild(a); a.click(); // 清理Blob URL URL.revokeObjectURL(blobUrl); // 移除a标签 document.body.removeChild(a); } }; xhr.send(); } // 使用示例 var imageUrl = 'https://example.com/image.jpg'; var fileName = 'image.jpg'; downloadImage(imageUrl, fileName); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值