import { Client, CopyDestinationOptions, CopySourceOptions } from 'minio'; type CopyObjectOpts = { bucketName: string; newMetadata: Record; objectName: string; client: Client; }; /** * 复制对象 REPLACE 替换 * @param param0 * @returns */ export const copyObject = async ({ bucketName, newMetadata, objectName, client }: CopyObjectOpts) => { const source = new CopySourceOptions({ Bucket: bucketName, Object: objectName }); const stat = await client.statObject(bucketName, objectName); const sourceMetadata = stat.metaData; const destination = new CopyDestinationOptions({ Bucket: bucketName, Object: objectName, UserMetadata: { ...sourceMetadata, ...newMetadata }, MetadataDirective: 'REPLACE', }); const copyResult = await client.copyObject(source, destination); return copyResult; };