提交 237691e7 authored 作者: 王鹏飞's avatar 王鹏飞

修改文件上传到本地服务器

上级 be2c40a5
...@@ -53,3 +53,32 @@ export function getMyField() { ...@@ -53,3 +53,32 @@ export function getMyField() {
export function getProcessProgress(params: { function_name: string }) { export function getProcessProgress(params: { function_name: string }) {
return httpRequest.get('/api/resource/bi/v1/processing/processing/progress', { params }) return httpRequest.get('/api/resource/bi/v1/processing/processing/progress', { params })
} }
// 获取分片大小和唯一文件名
export function getLocalFileChunk(params: { file_size: number; file_name: string }) {
return httpRequest.get('/api/lab/v1/common/file/chunk', { params })
}
// 上传每个分片前请求接口来获取当前文件是否超时,之前的分片是否被清理,如果被请求则拒绝处理。返回客户端错误码,让客户端户端不再续传剩余分片
// 1文件被清理 0文件未被清理
export function checkLocalFile(params: { file_name: string }) {
return httpRequest.get('/api/lab/v1/common/file/check', { params })
}
// 上传文件
export function uploadLocalFile(
data: {
file: File | Blob
file_name: string
is_continuingly?: number
now_package_num: number
total_package_num: number
},
options = {}
) {
return httpRequest.post(
'/api/lab/v1/common/file/upload',
data,
Object.assign({ withCredentials: false, headers: { 'Content-Type': 'multipart/form-data' } }, options)
)
}
import axios from 'axios' import axios from 'axios'
import md5 from 'blueimp-md5' import { getLocalFileChunk, uploadLocalFile } from '@/api/base'
import { getSignature, uploadFile } from '@/api/base'
export async function upload(blob: Blob | File) { export async function upload(file: Blob) {
let fileType = 'png' const response = await getLocalFileChunk({ file_name: 'abc', file_size: file.size })
if (blob instanceof File && blob.name) {
const matches = blob.name.match(/\.(\w+)$/)
if (matches) {
fileType = matches[1]
}
} else if (blob.type) {
const mimeType = blob.type.split('/').pop()
if (mimeType) {
fileType = mimeType
}
}
const key = 'upload/saas-bi/' + md5(new Date().getTime() + Math.random().toString(36).slice(-8)) + '.' + fileType
const response: any = await getSignature()
const params = { const params = {
key, file,
host: response.host, file_name: response.data.detail.file_name,
OSSAccessKeyId: response.accessid, now_package_num: 1,
policy: response.policy, total_package_num: 1
signature: response.signature,
success_action_status: '200',
file: blob,
url: `${response.host}/${key}`,
} }
await uploadFile(params) const res = await uploadLocalFile(params)
return params.url
return res.data.detail.uri
} }
export async function uploadFileByUrl(url: string) { export async function uploadFileByUrl(url: string) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论