import { get_base_url, REQUES_ERROR_CODES, goto_login_fun } from '@/api/request' import { getToken } from '@/common/common.js' import common from '@/common/common'; export const uploadFile = (file, data) => { const url = '/traoss/tras3/upload'; const base_url = get_base_url(url); const token = getToken(); const header = {}; console.log('file', file); if (token) header['summary'] = token return new Promise((resolve, reject) => { uni.uploadFile({ url: `${base_url}${url}`, header: header, filePath: file, name: 'file', formData: data, success(result) { try { const res = JSON.parse(result.data); if (res.rtnCode === '0000') { resolve(res.body); } else { reject(new Error(res.msg)); } } catch (error) { reject(new Error('Failed to parse response')); } }, fail(error) { console.log('error', error); reject(new Error('Upload failed')); } }); }); }; export const getPreviewFileUrl = (id) => { return get_base_url() + `/traoss/tras3/show/${id}` } // 对象存储下载 /traoss/tras3/show/{文件ID} export function downloadFile(id) { const token = getToken(); const header = { "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", }; if (token) header['summary'] = token let baseUrl = get_base_url(); return new Promise((resolve, reject) => { uni.downloadFile({ url: `${baseUrl}/traoss/tras3/show/${id}`, header, success(result) { resolve(result) }, fail(error) { reject(new Error(error)); } }); }); } // 上传音频 通用 export const commonUploadVoiceFile = (file, url, data = {}, fileKey = 'voice') => { const base_url = get_base_url(url); const token = getToken(); const header = { "Content-Type": "multipart/form-data; charset=UTF-8", }; if (token) header['summary'] = token return new Promise((resolve, reject) => { uni.uploadFile({ url: `${base_url}${url}`, header: header, filePath: file, name: fileKey, formData: data, timeout: 60000, success(result) { try { console.log(result) const res = JSON.parse(result.data); if (res.rtnCode === '0000') { return resolve(res); } else if (REQUES_ERROR_CODES['NO_LOGIN'].includes(res.rtnCode)) { goto_login_fun() return reject('NO_LOGIN'); } else if (res.rtnCode === '0004') { return reject('N'); } return reject('Other'); } catch (error) { reject(new Error('Failed to parse response')); } }, fail(error) { return reject('Other'); } }); }); }; // 上传音频 翻译文本 export const uploadVoiceFile = (file) => { const url = '/trastudy/traStdyInfo/audioTranscriptions'; const base_url = get_base_url(url); const token = getToken(); const header = { "Content-Type": "multipart/form-data; charset=UTF-8", }; if (token) header['summary'] = token return new Promise((resolve, reject) => { uni.uploadFile({ url: `${base_url}${url}`, header: header, filePath: file, name: 'voice', success(result) { try { const res = JSON.parse(result.data); if (res.rtnCode === '0000') { resolve(result); } else { reject(new Error(res.message)); } } catch (error) { reject(new Error('Failed to parse response')); } }, fail(error) { reject(new Error('Upload failed')); } }); }); }; // 获取音频 通用 export function downloadVoiceFile(url) { const token = getToken(); const header = { "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", }; if (token) header['summary'] = token let baseUrl = get_base_url(url); return new Promise((resolve, reject) => { uni.downloadFile({ url: `${baseUrl}${url}`, header, success(result) { console.log(result) resolve(result) }, fail(error) { console.log(error) reject(new Error(error)); } }); }); } export function getAudioByText(data) { const token = getToken(); const header = { "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", }; if (token) header['summary'] = token let baseUrl = get_base_url(); return new Promise((resolve, reject) => { uni.request({ url: `${baseUrl}/trastudy/traStdyInfo/readContent`, header, method: "POST", data, responseType: "arraybuffer", success(result) { if (result.statusCode === 200) { resolve(result.data) } else { reject(new Error(result)) } }, fail(error) { reject(new Error(error)); } }); }); } // 对象存储预览 /traoss/tras3/show/{文件ID} export function previewFile(id, responseType = 'arraybuffer') { const token = getToken(); const header = { "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", }; if (token) header['summary'] = token let baseUrl = get_base_url(); return new Promise((resolve, reject) => { uni.request({ url: `${baseUrl}/traoss/tras3/show/${id}`, header, responseType, success(result) { resolve(result) }, fail(error) { reject(new Error(error)); } }); }); } // 缩略图预览 /traoss/tras3/getCacheThumbImage/{fileId}/{width}/{height} export function previewCacheThumbImage(id, width = 30, height = 30) { const token = getToken(); const header = { "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", }; if (token) header['summary'] = token let baseUrl = get_base_url(); return new Promise((resolve, reject) => { uni.request({ url: `${baseUrl}/traoss/tras3/getCacheThumbImage/${id}/${width}/${height}`, header, success(result) { if (result.data.rtnCode === '0000') { let base64 = `data:image/png;base64,` + result.data.body resolve(base64) } else { reject({ error: result.data.message }) } }, fail(error) { reject(new Error(error)); } }); }); }