这是基于vue-vben-admin 模板适用于abp Vnext的前端管理项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

129 lines
3.4 KiB

import ApiService from './serviceBase'
import { PagedAndSortedResultRequestDto } from './types'
import { urlStringify } from '@/utils/index'
const serviceUrl = process.env.VUE_APP_BASE_API
const containerUrl = '/api/file-management/containes'
const objectUrl = '/api/file-management/objects'
export const objectUploadUrl = objectUrl + '/upload'
export const staticUrl = '/api/files/static/'
export default class OssManager {
public static createBucket(name: string) {
const _url = containerUrl + '/' + name
return ApiService.Post<OssContainer>(_url, null, serviceUrl)
}
public static getBucket(name: string) {
const _url = containerUrl + '/' + name
return ApiService.Get<OssContainer>(_url, serviceUrl)
}
public static getBuckets(input: GetOssContainerRequest) {
const _url = containerUrl + '?' + urlStringify(input)
return ApiService.Get<OssContainerResultList>(_url, serviceUrl)
}
public static deleteBucket(name: string) {
const _url = containerUrl + '/' + name
return ApiService.Delete(_url, serviceUrl)
}
public static createFolder(bucket: string, name: string, path: string = "") {
const input = {
bucket: bucket,
object: name,
path: path
}
return ApiService.Post<OssObject>(objectUrl, input, serviceUrl)
}
public static getObjects(input: GetOssObjectRequest) {
const _url = containerUrl + '/objects?' + urlStringify(input)
return ApiService.Get<OssObjectResultList>(_url, serviceUrl)
}
public static getObject(bucket: string, object: string, path: string = "") {
let _url = objectUrl + '?bucket=' + bucket + '&object=' + object
if (path) {
_url += '&path=' + path
}
return ApiService.Get<OssObject>(_url, serviceUrl)
}
public static getObjectData(bucket: string, object: string, path: string = "") {
let _url = staticUrl + bucket + '/'
if (path) {
// 某些情况下要对 / 编码
_url += '/p/' + path.replace('/', '%2F')
if (_url.endsWith('%2F')) {
_url = _url.substring(0, _url.length - 3) + '/'
}
}
_url += object
return ApiService.HttpRequest<Blob>({
url: _url,
baseURL: serviceUrl,
method: 'GET',
responseType: 'blob'
})
}
public static deleteObject(bucket: string, object: string, path: string = "") {
let _url = objectUrl + '?bucket=' + bucket + '&object=' + object
if (path) {
_url += '&path=' + path
}
return ApiService.Delete(_url, serviceUrl)
}
}
export class GetOssContainerRequest extends PagedAndSortedResultRequestDto {
prefix?: string
marker?: string
}
export class GetOssObjectRequest extends PagedAndSortedResultRequestDto {
bucket!: string
prefix?: string
delimiter?: string = '/'
marker?: string
encodingType?: string
maxResultCount = 100
}
export class OssContainer {
name!: string
size!: number
creationDate?: Date
lastModifiedDate?: Date
metadata?: {[key: string]: string}
}
export class OssContainerResultList {
prefix?: string
marker?: string
nextMarker?: string
maxKeys?: number
containers!: OssContainer[]
}
export class OssObject {
name!: string
path?: string
size!: number
isFolder!: boolean
creationDate?: Date
lastModifiedDate?: Date
metadata?: {[key: string]: string}
}
export class OssObjectResultList {
bucket!: string
prefix?: string
delimiter?: string
marker?: string
nextMarker?: string
maxKeys?: number
objects!: OssObject[]
}