初始化
This commit is contained in:
185
web/src/api/file.ts
Normal file
185
web/src/api/file.ts
Normal file
@@ -0,0 +1,185 @@
|
||||
/**
|
||||
* 文件管理相关 API
|
||||
*/
|
||||
import request from './request'
|
||||
|
||||
/** 文件信息 */
|
||||
export interface FileInfo {
|
||||
id: number
|
||||
name: string
|
||||
extension: string
|
||||
folder_id: number
|
||||
size: number
|
||||
mime_type: string
|
||||
is_favorite: number
|
||||
download_count: number
|
||||
created_at: string
|
||||
updated_at: string
|
||||
}
|
||||
|
||||
/** 文件夹信息 */
|
||||
export interface FolderInfo {
|
||||
id: number
|
||||
name: string
|
||||
parent_id: number
|
||||
path: string
|
||||
created_at: string
|
||||
updated_at: string
|
||||
}
|
||||
|
||||
/** 文件列表响应 */
|
||||
export interface FileListResult {
|
||||
folders: FolderInfo[]
|
||||
files: FileInfo[]
|
||||
}
|
||||
|
||||
/** 分享信息 */
|
||||
export interface ShareInfo {
|
||||
id: number
|
||||
share_code: string
|
||||
share_url: string
|
||||
has_password: boolean
|
||||
expire_at: string | null
|
||||
max_download: number
|
||||
download_count: number
|
||||
created_at: string
|
||||
}
|
||||
|
||||
/**
|
||||
* 上传文件
|
||||
* @param file 文件对象
|
||||
* @param folderId 目标文件夹ID, 0=根目录
|
||||
*/
|
||||
export function uploadFile(file: File, folderId: number = 0) {
|
||||
const formData = new FormData()
|
||||
formData.append('file', file)
|
||||
return request.post<any, { data: FileInfo }>(`/file/upload?folder_id=${folderId}`, formData, {
|
||||
headers: { 'Content-Type': 'multipart/form-data' },
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取文件夹内容(文件+子文件夹)
|
||||
*/
|
||||
export function getFolderChildren(folderId: number | string) {
|
||||
return request.get<any, { data: FileListResult }>(`/folder/${folderId}/children`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建文件夹
|
||||
*/
|
||||
export function createFolder(name: string, parentId: number = 0) {
|
||||
return request.post('/folder', { name, parent_id: parentId })
|
||||
}
|
||||
|
||||
/**
|
||||
* 重命名文件
|
||||
*/
|
||||
export function renameFile(fileId: number, newName: string) {
|
||||
return request.put(`/file/${fileId}/rename`, { new_name: newName })
|
||||
}
|
||||
|
||||
/**
|
||||
* 重命名文件夹
|
||||
*/
|
||||
export function renameFolder(folderId: number, newName: string) {
|
||||
return request.put(`/folder/${folderId}/rename`, { new_name: newName })
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除文件(移入回收站)
|
||||
*/
|
||||
export function deleteFile(fileId: number) {
|
||||
return request.delete(`/file/${fileId}`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除文件夹(移入回收站)
|
||||
*/
|
||||
export function deleteFolder(folderId: number) {
|
||||
return request.delete(`/folder/${folderId}`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 移动文件
|
||||
*/
|
||||
export function moveFile(fileId: number, targetFolderId: number) {
|
||||
return request.post(`/file/${fileId}/move`, { target_folder_id: targetFolderId })
|
||||
}
|
||||
|
||||
/**
|
||||
* 搜索文件
|
||||
*/
|
||||
export function searchFiles(keyword: string) {
|
||||
return request.get<any, { data: FileInfo[] }>('/file/search', { params: { keyword } })
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取回收站列表
|
||||
*/
|
||||
export function getTrash() {
|
||||
return request.get<any, { data: FileInfo[] }>('/file/trash')
|
||||
}
|
||||
|
||||
/**
|
||||
* 恢复文件
|
||||
*/
|
||||
export function restoreFile(fileId: number) {
|
||||
return request.post(`/file/${fileId}/restore`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 永久删除文件
|
||||
*/
|
||||
export function permanentDeleteFile(fileId: number) {
|
||||
return request.delete(`/file/${fileId}/permanent`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取文件下载链接
|
||||
*/
|
||||
export function getDownloadUrl(fileId: number): string {
|
||||
return `/api/file/${fileId}/download`
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建分享
|
||||
*/
|
||||
export function createShare(fileId: number, password?: string, expireHours?: number, maxDownload?: number, allowPreview?: number, allowDownload?: number) {
|
||||
return request.post<any, { data: ShareInfo }>('/share', {
|
||||
file_id: fileId,
|
||||
password,
|
||||
expire_hours: expireHours,
|
||||
max_download: maxDownload,
|
||||
allow_preview: allowPreview,
|
||||
allow_download: allowDownload,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取我的分享列表
|
||||
*/
|
||||
export function getMyShares() {
|
||||
return request.get<any, { data: ShareInfo[] }>('/share')
|
||||
}
|
||||
|
||||
/**
|
||||
* 取消分享
|
||||
*/
|
||||
export function cancelShare(shareId: number) {
|
||||
return request.delete(`/share/${shareId}`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取分享信息(公开)
|
||||
*/
|
||||
export function getShareInfo(code: string) {
|
||||
return request.get(`/s/${code}`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证分享密码
|
||||
*/
|
||||
export function verifySharePassword(code: string, password: string) {
|
||||
return request.post(`/s/${code}/verify`, { password })
|
||||
}
|
||||
Reference in New Issue
Block a user