新增: 文件操作增强与预览扩展
- 文件剪贴板复制剪切粘贴,重名自动副本 - SFTP下载到本机与外部文件拖入,目录递归 - 传输进度浮动面板,transfer-progress事件链 - Drawio预览,Excel工作线程,冻结看门狗 - cmd与bat自写batch语法高亮,psm1等映射补齐
This commit is contained in:
@@ -5,6 +5,7 @@
|
||||
import type {
|
||||
FsTransport, FileItem, FileOperationResult, DetectTypeResult,
|
||||
} from './transport'
|
||||
import { transformFileList, joinPath, probeAlive } from './transport'
|
||||
import type { ConnectionProfile } from './connection-manager'
|
||||
import {
|
||||
OssConnect, OssDisconnect, OssListDir, OssReadFile,
|
||||
@@ -13,14 +14,6 @@ import {
|
||||
OssGetCommonPaths, OssWriteBase64File, OssGetSignedURL,
|
||||
} from '@bindings/u-desk/app'
|
||||
|
||||
function transformFile(file: any): FileItem {
|
||||
return { ...file, is_dir: file.is_dir, mod_time: file.mod_time }
|
||||
}
|
||||
|
||||
function transformFileList(files: any[]): FileItem[] {
|
||||
return files.map(transformFile)
|
||||
}
|
||||
|
||||
export class OssTransport implements FsTransport {
|
||||
private profile: ConnectionProfile
|
||||
private connID: string | null = null
|
||||
@@ -40,6 +33,10 @@ export class OssTransport implements FsTransport {
|
||||
return result
|
||||
}
|
||||
|
||||
async isAlive(): Promise<boolean> {
|
||||
return probeAlive(this.connID, id => OssListDir(id, ''))
|
||||
}
|
||||
|
||||
get sessionId(): string | null { return this.connID }
|
||||
|
||||
async disconnect(): Promise<void> {
|
||||
@@ -84,13 +81,11 @@ export class OssTransport implements FsTransport {
|
||||
// ====== 文件操作 ======
|
||||
|
||||
async createFile(dirPath: string, filename: string): Promise<FileOperationResult> {
|
||||
const fullPath = dirPath.replace(/\/$/, '') + '/' + filename
|
||||
return OssCreateFile(this.requireConn(), fullPath)
|
||||
return OssCreateFile(this.requireConn(), joinPath(dirPath, filename))
|
||||
}
|
||||
|
||||
async createDir(parentPath: string, dirname: string): Promise<FileOperationResult> {
|
||||
const fullPath = parentPath.replace(/\/$/, '') + '/' + dirname
|
||||
return OssCreateDir(this.requireConn(), fullPath)
|
||||
return OssCreateDir(this.requireConn(), joinPath(parentPath, dirname))
|
||||
}
|
||||
|
||||
async deletePath(path: string): Promise<FileOperationResult> {
|
||||
@@ -105,6 +100,24 @@ export class OssTransport implements FsTransport {
|
||||
})
|
||||
}
|
||||
|
||||
// ====== 复制/移动/传输(不支持)======
|
||||
|
||||
async copyPath(_src: string, _dst: string): Promise<void> {
|
||||
throw new Error('OSS 面板暂不支持复制/粘贴')
|
||||
}
|
||||
|
||||
async movePath(_src: string, _dst: string): Promise<void> {
|
||||
throw new Error('OSS 面板暂不支持剪切/粘贴')
|
||||
}
|
||||
|
||||
async downloadToFile(_path: string, _localDstDir: string): Promise<string> {
|
||||
throw new Error('OSS 下载到本机暂未实现')
|
||||
}
|
||||
|
||||
async uploadFromFile(_localPath: string, _remoteDir: string): Promise<void> {
|
||||
throw new Error('OSS 上传暂未实现')
|
||||
}
|
||||
|
||||
// ====== ZIP 操作(不支持)======
|
||||
|
||||
async listZipContents(_zipPath: string): Promise<FileItem[]> {
|
||||
@@ -177,4 +190,7 @@ export class OssTransport implements FsTransport {
|
||||
async getSignedUrl(key: string): Promise<string> {
|
||||
return OssGetSignedURL(this.requireConn(), key)
|
||||
}
|
||||
|
||||
async watchFile(_path: string): Promise<void> { /* OSS 模式不支持文件监听 */ }
|
||||
async unwatchFile(): Promise<void> { /* OSS 模式不支持文件监听 */ }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user