| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- import { BaseApi } from './baseApi.js'
- import api from './index.js'
- function parseResult(response) {
- let result = response && response.data
- if (typeof result === 'string') {
- try {
- result = JSON.parse(result)
- } catch (error) {
- throw new Error('上传失败,请重试')
- }
- }
- if (!response || response.statusCode !== 200 || !result || result.code !== 0) {
- throw new Error(result && result.msg ? result.msg : '上传失败,请重试')
- }
- return result.data
- }
- function unwrap(response) {
- const result = response && response.data
- if (!result || result.code !== 0) {
- throw new Error(result && result.msg ? result.msg : '请求失败,请重试')
- }
- return result.data
- }
- function getHeader(headers, name) {
- if (!headers || typeof headers !== 'object') return ''
- const expectedName = name.toLowerCase()
- for (const key of Object.keys(headers)) {
- if (key.toLowerCase() === expectedName) return String(headers[key] || '')
- }
- return ''
- }
- function isDocumentDownload(headers) {
- const contentType = getHeader(headers, 'content-type').split(';')[0].trim().toLowerCase()
- const disposition = getHeader(headers, 'content-disposition').trim()
- if (!contentType || !/^attachment(?:\s*;|$)/i.test(disposition)) return false
- if (contentType === 'application/json' || contentType === 'text/json'
- || contentType.endsWith('+json') || contentType === 'text/html'
- || contentType === 'application/xhtml+xml') return false
- return true
- }
- export function uploadTeamBackgroundFile(teamId, filePath, onProgress = () => {}) {
- return new Promise((resolve, reject) => {
- const task = uni.uploadFile({
- url: `${BaseApi}/core/user/team/${teamId}/background-files`,
- filePath,
- name: 'file',
- header: { token: uni.getStorageSync('token') },
- success: response => {
- try {
- resolve(parseResult(response))
- } catch (error) {
- reject(error)
- }
- },
- fail: reject
- })
- task.onProgressUpdate(progress => onProgress(progress.progress))
- })
- }
- export const listTeamBackgroundFiles = teamId => api
- .get(`/core/user/team/${teamId}/background-files`, {}, false)
- .then(unwrap)
- export const disableTeamBackgroundFile = (teamId, fileId) => api
- .del(`/core/user/team/${teamId}/background-files/${fileId}`, {}, false)
- .then(unwrap)
- export const createTeamBackgroundSession = teamId => api
- .post(`/core/user/team/${teamId}/background-upload-session`, {}, false)
- .then(unwrap)
- export function downloadTeamBackgroundFile(teamId, fileId) {
- return new Promise((resolve, reject) => {
- let responseHeaders
- const task = uni.downloadFile({
- url: `${BaseApi}/core/user/team/${teamId}/background-files/${fileId}/download`,
- header: { token: uni.getStorageSync('token') },
- success: result => {
- const resultHeaders = result && (result.header || result.headers)
- if (!result || result.statusCode !== 200
- || !isDocumentDownload(responseHeaders || resultHeaders)) {
- reject(new Error('下载失败,请重试'))
- return
- }
- wx.openDocument({
- filePath: result.tempFilePath,
- showMenu: true,
- success: resolve,
- fail: reject
- })
- },
- fail: reject
- })
- if (task && typeof task.onHeadersReceived === 'function') {
- task.onHeadersReceived(result => {
- responseHeaders = result && (result.header || result.headers)
- })
- }
- })
- }
|