nex_docus/frontend/src/api/file.js

132 lines
2.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/**
* 文件系统相关 API
*/
import request from '@/utils/request'
/**
* 获取项目目录树
*/
export function getProjectTree(projectId) {
return request({
url: `/files/${projectId}/tree`,
method: 'get',
})
}
/**
* 获取文件内容
*/
export function getFileContent(projectId, path) {
// 直接在 URL 中拼接参数,避免 axios 自动编码
// 手动编码一次,确保不会双重编码
const encodedPath = encodeURIComponent(path)
return request({
url: `/files/${projectId}/file?path=${encodedPath}`,
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',
})
}
/**
* 上传文档文件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}`
}