nex_docus/frontend/src/api/file.js

132 lines
2.8 KiB
JavaScript
Raw Normal View History

2025-12-20 11:18:59 +00:00
/**
* 文件系统相关 API
*/
import request from '@/utils/request'
/**
* 获取项目目录树
*/
export function getProjectTree(projectId) {
return request({
url: `/files/${projectId}/tree`,
method: 'get',
})
}
/**
* 获取文件内容
*/
export function getFileContent(projectId, path) {
2025-12-25 04:22:35 +00:00
// 直接在 URL 中拼接参数,避免 axios 自动编码
// 手动编码一次,确保不会双重编码
const encodedPath = encodeURIComponent(path)
2025-12-20 11:18:59 +00:00
return request({
2025-12-25 04:22:35 +00:00
url: `/files/${projectId}/file?path=${encodedPath}`,
2025-12-20 11:18:59 +00:00
method: 'get',
})
}
/**
* 保存文件内容
*/
export function saveFile(projectId, data) {
return request({
url: `/files/${projectId}/file`,
method: 'post',
data,
})
}
/**
* 文件操作重命名/删除/创建
*/
export function operateFile(projectId, data) {
return request({
url: `/files/${projectId}/file/operate`,
method: 'post',
data,
})
}
/**
* 上传文件
*/
export function uploadFile(projectId, file, subfolder = 'images') {
const formData = new FormData()
formData.append('file', file)
return request({
url: `/files/${projectId}/upload?subfolder=${subfolder}`,
method: 'post',
data: formData,
headers: {
'Content-Type': 'multipart/form-data',
},
})
}
/**
* 获取资源文件 URL公开访问支持分享
*/
export function getAssetUrl(projectId, subfolder, filename) {
return `/api/v1/files/${projectId}/assets/${subfolder}/${filename}`
}
/**
* 批量导入Markdown文档
*/
export function importDocuments(projectId, files, targetPath = '') {
const formData = new FormData()
files.forEach((file) => {
formData.append('files', file)
})
return request({
url: `/files/${projectId}/import-documents?target_path=${targetPath}`,
method: 'post',
data: formData,
headers: {
'Content-Type': 'multipart/form-data',
},
})
}
/**
* 导出目录为ZIP
*/
export function exportDirectory(projectId, directoryPath = '') {
return request({
url: `/files/${projectId}/export-directory`,
method: 'get',
params: { directory_path: directoryPath },
responseType: 'blob',
})
}
2025-12-31 05:44:03 +00:00
/**
* 上传文档文件PDF等
*/
export function uploadDocument(projectId, file, targetDir = '') {
const formData = new FormData()
formData.append('file', file)
return request({
url: `/files/${projectId}/upload-document?target_dir=${encodeURIComponent(targetDir)}`,
method: 'post',
data: formData,
headers: {
'Content-Type': 'multipart/form-data',
},
})
}
/**
* 获取文档文件URLPDF等
*/
export function getDocumentUrl(projectId, path) {
// 将路径的每个部分分别编码,但保留斜杠
const encodedPath = path.split('/').map(part => encodeURIComponent(part)).join('/')
return `/api/v1/files/${projectId}/document/${encodedPath}`
}