feat: 增加 MSD 虚拟盘文件路径编码

This commit is contained in:
mofeng-git
2026-05-01 21:27:03 +08:00
parent a1ebd34083
commit e51d243324

View File

@@ -560,15 +560,15 @@ export const msdApi = {
}, },
downloadDriveFile: (path: string) => downloadDriveFile: (path: string) =>
`${API_BASE}/msd/drive/files${path.startsWith('/') ? path : '/' + path}`, `${API_BASE}/msd/drive/files${encodeDrivePath(path)}`,
deleteDriveFile: (path: string) => deleteDriveFile: (path: string) =>
request<{ success: boolean }>(`/msd/drive/files${path.startsWith('/') ? path : '/' + path}`, { request<{ success: boolean }>(`/msd/drive/files${encodeDrivePath(path)}`, {
method: 'DELETE', method: 'DELETE',
}), }),
createDirectory: (path: string) => createDirectory: (path: string) =>
request<{ success: boolean }>(`/msd/drive/mkdir${path.startsWith('/') ? path : '/' + path}`, { request<{ success: boolean }>(`/msd/drive/mkdir${encodeDrivePath(path)}`, {
method: 'POST', method: 'POST',
}), }),
@@ -599,6 +599,22 @@ interface SerialDeviceOption {
name: string name: string
} }
function encodeDrivePath(path: string): string {
if (path === '' || path === '/') {
return '/'
}
const hasLeadingSlash = path.startsWith('/')
const hasTrailingSlash = path.endsWith('/')
const encodedSegments = path
.split('/')
.filter(Boolean)
.map(segment => encodeURIComponent(segment))
.join('/')
return `${hasLeadingSlash ? '/' : ''}${encodedSegments}${hasTrailingSlash ? '/' : ''}`
}
function getSerialDevicePriority(path: string): number { function getSerialDevicePriority(path: string): number {
if (/^\/dev\/ttyUSB/i.test(path)) return 0 if (/^\/dev\/ttyUSB/i.test(path)) return 0
if (/^\/dev\/(ttyS|S)/i.test(path)) return 2 if (/^\/dev\/(ttyS|S)/i.test(path)) return 2