sf-utils2 sf-utils2
版本v3.3.3-beta1
首页
  • 01.快速开始 🔥
  • 02.基础-Base
  • 03.对象-Object
  • 04.数组-Array
  • 05.方法-Function
  • 06.字符串-String
  • 07.数学-Math
  • 08.dom
  • 09.拓展
  • webpack5.x教程学习 (opens new window)
  • 例子
  • 教程 🔥
  • 例子配置
企业级后台模版 (opens new window)
版本v3.3.3-beta1
首页
  • 01.快速开始 🔥
  • 02.基础-Base
  • 03.对象-Object
  • 04.数组-Array
  • 05.方法-Function
  • 06.字符串-String
  • 07.数学-Math
  • 08.dom
  • 09.拓展
  • webpack5.x教程学习 (opens new window)
  • 例子
  • 教程 🔥
  • 例子配置
企业级后台模版 (opens new window)
  • 快速开始

  • 基础-Base

  • 对象-Object

  • 数组-Array✨✨✨

  • 方法-Function

  • 字符串-String

  • 数学-Math

  • 文件-Buffer

  • 节点-dom

    • 序言 👏
    • _constant
    • getHttpBlob【获取远程二进制数据流】
      • 1.示例
      • 2.入参说明
        • 2.1 options 入参说明
      • 3.源码
    • downloadFile【http下载文件】
    • loadJsSync【单个加载js文件】
    • loadJsOrCssMulSync【批量加载远程css和js文件】
    • getAbsOffsetTop【距离父滚动区域顶部绝对距离】 🔥
    • getParentScrollElement【获取父元素滚动元素】 🔥
    • isScroll【是否是滚动容器】
    • scrollToX【水平滚动到某个具体位置】 🔥
    • scrollToY【垂直滚动到某个具体位置】 🔥
    • scrollToElement【滚动到某个dom元素】 🔥
    • isElementInContainer【元素是否整体在容器内】
    • batchElsPosInContainer【批量 dom 元素在 父的滚动视图位置】 🔥
    • isElementVisibleInViewport【是否可见在某个股东元素上】 🔥
    • observerElementMutation【监听dom元素属性变化】 🔥
    • print【打印】 🔥
    • partialCb【分片加载】
    • domUtils【dom方法操作基础】 🔥
  • 拓展

  • nodejs

目录

getHttpBlob【获取远程二进制数据流】

描述

通过 ajax 获取远程二进制数据流

# 1.示例

点击获取远程的blob 通过post下载
<template>
  <div>
    <el-button @click="onClick">点击获取远程的blob</el-button>
    <el-button @click="onClick2">通过post下载</el-button>
  </div>
</template>

<script>
import { getHttpBlob } from 'sf-utils2'
const url = 'https://info.compassedu.hk/ad/225/1637553399694.png?imageView2/3/q/100|imageslim'
export default {
  methods: {
    async onClick() {
      const blob = await getHttpBlob(url)
      alert('获取远程blob成功,去查看一下控制输出吧')
      console.log('打印一下', blob)
    },

    async onClick2() {
      const blob = await getHttpBlob(url, { method: 'POST', data: {} })
      alert('通过POST获取远程blob成功,去查看一下控制输出吧')
      console.log('打印一下', blob)
    }
  }
}
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
显示代码 复制代码 复制代码

# 2.入参说明

参数 说明 类型 是否必填 默认值
url http 链接地址 String 是
options 选项 object 否 {}

# 2.1 options 入参说明

参数 说明 类型 是否必填 默认值
method 请求方式,可选值:GET、POST、DELETE、PUT String 是 GET
headers 请求头 object 、undefined 否 undefined
data 请求实体 object、undefined 否 undefined

# 3.源码

源码,点开查看 👈
import isPlainObject from '@/base/isPlainObject'

/**
 * ajax根据http链接地址 获取远程blob
 * @param {string} url
 * @param {{method?: string, data: object, headers: object }} option
 * @returns {Promise<unknown>}
 */
function getHttpBlob(url, option = {}) {
  const defaultOpts = {
    method: 'GET',
    data: undefined,
    headers: undefined,
    ...option
  }
  return new Promise((resolve, reject) => {
    const xhr = new XMLHttpRequest()
    xhr.open(defaultOpts.method?.toUpperCase?.(), url, true)
    xhr.responseType = 'blob'
    // xhr.setRequestHeader('Content-Type', 'application/json')
    if (isPlainObject(defaultOpts.header)) {
      Object.entries(defaultOpts.header).forEach(([k, v]) => {
        xhr.setRequestHeader(k, v)
      })
    }
    xhr.send(JSON.stringify(option.data))
    xhr.onload = () => {
      if (xhr.status === 200) {
        resolve(xhr.response)
      } else {
        reject(xhr)
      }
    }
  })
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
上次更新: 2025/07/01, 14:52:29
_constant
downloadFile【http下载文件】

← _constant downloadFile【http下载文件】→

Theme by Vdoing | Copyright © 2022-2025 bianpengfei
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×