请求文件内容获取blob数据
import axios from 'axios'
import { base64ToHex } from '@utils/util'
export const fileService = {
// 读.dat文件
// 这里已经对返回的blob文件数据进行了处理,然会的结果直接就是16进制字符串了,可以直接解析
readDatFile: (url: string) => {
return new Promise((resolve, reject) => {
// axios.get(url.replace('https://elasticbeanstalk-us-west-2-697648770036.s3.us-west-2.amazonaws.com/viatomstoragetest/data', '/file'), {
axios.get(url, {
responseType: 'blob'
}).then((res: any) => {
const reader = new FileReader()
reader.readAsDataURL(res.data)
reader.onload = (e: any) => {
resolve(base64ToHex(e.target.result.split(',')[1]))
}
})
})
},
}
- 所以这里主要是需要把base64内容转换成需要的类型,这里我们的文件协议按16进制解析,就转成了16进制
// base64转16进制
export function base64ToHex(base64: string) {
const raw = atob(base64)
let result = ''
for (let i = 0; i < raw.length; i++) {
const hex = raw.charCodeAt(i).toString(16)
result += (hex.length === 2 ? hex : '0' + hex)
}
return result
}