alioss-mcp
Version:
为AI编码工具提供阿里云OSS访问能力的Model Context Protocol服务器
120 lines • 4.12 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.MultipartUploadManager = void 0;
const fs_1 = __importDefault(require("fs"));
class MultipartUploadManager {
ossServer;
constructor(ossServer) {
this.ossServer = ossServer;
}
async initMultipartUpload(fileName) {
try {
const result = await this.ossServer["ossClient"].initMultipartUpload(fileName);
if (result.res.status === 200) {
return {
uploadId: result.uploadId,
name: result.name,
};
}
return null;
}
catch (error) {
console.error("Init multipart upload error:", error);
return null;
}
}
async uploadPart(fileName, uploadId, partNo, filePath, start, end) {
try {
const fileSize = fs_1.default.statSync(filePath).size;
const endPos = Math.min(end, fileSize);
const result = await this.ossServer["ossClient"].uploadPart(fileName, uploadId, partNo, filePath, start, endPos);
if (result.res.status === 200) {
return {
etag: result.etag,
number: partNo,
};
}
return null;
}
catch (error) {
console.error("Upload part error:", error);
return null;
}
}
async completeMultipartUpload(fileName, uploadId, parts) {
try {
const result = await this.ossServer["ossClient"].completeMultipartUpload(fileName, uploadId, parts);
if (result.res.status === 200) {
return {
name: result.name,
etag: result.etag,
};
}
return null;
}
catch (error) {
console.error("Complete multipart upload error:", error);
return null;
}
}
async multipartUpload(fileName, filePath, partSize = 1024 * 1024) {
try {
const options = {
partSize,
progress: (p) => {
console.log(`上传进度: ${(p * 100).toFixed(2)}%`);
},
};
const result = await this.ossServer["ossClient"].multipartUpload(fileName, filePath, options);
if (result.res.status === 200) {
return {
name: result.name,
etag: result.etag,
};
}
return null;
}
catch (error) {
console.error("Multipart upload error:", error);
return null;
}
}
async abortMultipartUpload(fileName, uploadId) {
try {
const result = await this.ossServer["ossClient"].abortMultipartUpload(fileName, uploadId);
return result && result.status === 204;
}
catch (error) {
console.error("Abort multipart upload error:", error);
return false;
}
}
async listUploads(prefix, maxUploads) {
try {
const options = {};
if (prefix)
options.prefix = prefix;
if (maxUploads)
options.maxUploads = maxUploads;
const result = await this.ossServer["ossClient"].listUploads(options);
if (result.res.status === 200) {
return {
uploads: result.uploads,
isTruncated: result.isTruncated,
nextKeyMarker: result.nextKeyMarker,
nextUploadIdMarker: result.nextUploadIdMarker,
};
}
return null;
}
catch (error) {
console.error("List uploads error:", error);
return null;
}
}
}
exports.MultipartUploadManager = MultipartUploadManager;
//# sourceMappingURL=multipart.js.map