12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- import { axios } from '@/request'
- import { uploadFile } from '@/request/urls'
- import { ElMessage } from 'element-plus'
- /**
- * 上传文件的公共方法
- * @param file - 要上传的文件
- * @param onProgress - 上传进度回调函数
- * @returns Promise<{url: string, fileName: string}> 返回上传成功后的文件信息
- */
- export const uploadFileToServer = async (
- file: File,
- onProgress?: (progressEvent: any) => void
- ): Promise<{url: string, fileName: string}> => {
- try {
- const formData = new FormData()
- formData.append('file', file)
- const response = await axios({
- url: uploadFile,
- method: 'POST',
- data: { file },
- onUploadProgress: onProgress
- })
- if (response.code === 0 || response.code === '000000' || response.code === 200) {
- return {
- url: response.data?.url || response.data,
- fileName: file.name
- }
- } else {
- throw new Error(response.msg || '上传失败')
- }
- } catch (error) {
- console.error('文件上传失败:', error)
- ElMessage.error('文件上传失败')
- throw error
- }
- }
- /**
- * 将Canvas转换为Blob对象
- * @param canvas - Canvas元素
- * @param quality - 图片质量(0-1)
- * @param format - 图片格式
- * @returns Promise<Blob>
- */
- export const canvasToBlob = (
- canvas: HTMLCanvasElement,
- quality: number = 0.8,
- format: string = 'image/jpeg'
- ): Promise<Blob> => {
- return new Promise((resolve, reject) => {
- canvas.toBlob(
- (blob) => {
- if (blob) {
- resolve(blob)
- } else {
- reject(new Error('Canvas转换为Blob失败'))
- }
- },
- format,
- quality
- )
- })
- }
- /**
- * Blob转换为File对象
- * @param blob - Blob对象
- * @param fileName - 文件名
- * @returns File对象
- */
- export const blobToFile = (blob: Blob, fileName: string): File => {
- return new File([blob], fileName, { type: blob.type })
- }
|