27 lines
850 B
TypeScript
27 lines
850 B
TypeScript
import { Client, CopyDestinationOptions, CopySourceOptions } from 'minio';
|
|
|
|
type CopyObjectOpts = {
|
|
bucketName: string;
|
|
newMetadata: Record<string, string>;
|
|
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;
|
|
};
|