123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- export const blobToJson = (blob) => {
- return new Promise((resolve, reject) => {
- const reader = new FileReader()
- reader.onload = function (event) {
- const jsonString = event.target.result
- const jsonObject = JSON.parse(jsonString)
- resolve(jsonObject)
- }
- reader.onerror = function (error) {
- reject(error)
- }
- reader.readAsText(blob)
- })
- }
- // 判断是图片还是视频
- export const checkIsImage = (url) => {
- var link = new URL(url)
- var path = link.pathname
- var extension = path.split('.').pop().toLowerCase()
- var imageExtensions = ['jpg', 'jpeg', 'gif', 'png', 'jfif']
- var videoExtensions = ['mp4', 'wmv', 'avi', 'mov']
- // 图片
- if (imageExtensions.includes(extension)) {
- return true
- }
- // 视频
- if (videoExtensions.includes(extension)) {
- return false
- }
- return null
- }
- // 预览文件
- import { Base64 } from 'js-base64'
- export const previewFile = (url) => {
- const baseUrl = import.meta.env.VITE_PREVIEW_URL
- window.open(`${baseUrl}/onlinePreview?url=${encodeURIComponent(Base64.encode(url))}`)
- }
- export const generateUUID = () => {
- var d = new Date().getTime()
- if (window.performance && typeof window.performance.now === "function") {
- d += performance.now(); //use high-precision timer if available
- }
- var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
- var r = (d + Math.random() * 16) % 16 | 0
- d = Math.floor(d / 16)
- return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16)
- })
- return uuid.replace(/-/g, "")
- }
- // 64转file
- export const base64ToBlob = (code) => {
- let parts = code.split(';base64,')
- let contentType = parts[0].split(':')[1]
- let raw = window.atob(parts[1])
- let rawLength = raw.length
- let uInt8Array = new Uint8Array(rawLength)
- for (let i = 0; i < rawLength; ++i) {
- uInt8Array[i] = raw.charCodeAt(i)
- }
- return new Blob([uInt8Array], {
- type: contentType
- })
- }
- import axios from 'axios'
- export const downloadImgVideo = async (content, fileName) => {
- try {
- const response = await axios.get(content, { responseType: 'blob' });
- const suffix = content.split('.').pop()
- const url = window.URL.createObjectURL(new Blob([response.data]));
- const link = document.createElement('a');
- link.style.display = 'none';
- link.href = url;
- link.download = fileName + `.${suffix}`
- document.body.appendChild(link);
- link.click();
- window.URL.revokeObjectURL(url);
- } catch (error) {
- console.error('Error downloading file:', error);
- }
- }
- export const downloadBase64 = async (content, fileName) => {
- let aLink = document.createElement('a')
- let blob = base64ToBlob(content)
- aLink.download = fileName + '.png'
- aLink.href = URL.createObjectURL(blob)
- aLink.click()
- }
- export const DPR = () => {
- // 获取设备dpi
- if (window.devicePixelRatio && window.devicePixelRatio > 1) {
- return window.devicePixelRatio * 2
- }
- // 直接返回高像素比
- return 8
- }
- // 文件下载
- export const getBlob = (url) => {
- return new Promise(resolve => {
- const xhr = new XMLHttpRequest()
- xhr.open('GET', url, true)
- xhr.responseType = 'blob'
- xhr.onload = () => {
- if (xhr.status === 200) resolve(xhr.response)
- }
- xhr.send()
- })
- }
- export const saveAs = (blob, filename) => {
- var link = document.createElement('a')
- link.href = window.URL.createObjectURL(blob)
- link.download = filename
- link.click()
- }
- // 计算空格
- export const spaces = (num = 6) => {
- return '\xa0'.repeat(num)
- }
- // 过滤对象空属性
- export const removeEmptyProperties = (obj) => {
- return Object.fromEntries(
- Object.entries(obj).filter(([key, value]) => value !== null && value !== undefined && value !== '' && (Array.isArray(value) ? value.length > 0 : true))
- )
- }
|