Improve object storage key
This commit is contained in:
		
							parent
							
								
									9d6641be3a
								
							
						
					
					
						commit
						7f9a35d7ac
					
				
					 2 changed files with 14 additions and 10 deletions
				
			
		| 
						 | 
				
			
			@ -35,20 +35,19 @@ async function save(path: string, name: string, type: string, hash: string, size
 | 
			
		|||
 | 
			
		||||
	if (config.drive && config.drive.storage == 'minio') {
 | 
			
		||||
		const minio = new Minio.Client(config.drive.config);
 | 
			
		||||
		const id = uuid.v4();
 | 
			
		||||
		const obj = `${config.drive.prefix}/${id}`;
 | 
			
		||||
		const thumbnailObj = `${obj}-thumbnail`;
 | 
			
		||||
		const key = `${config.drive.prefix}/${uuid.v4()}/${name}`;
 | 
			
		||||
		const thumbnailKey = `${config.drive.prefix}/${uuid.v4()}/${name}.thumbnail.jpg`;
 | 
			
		||||
 | 
			
		||||
		const baseUrl = config.drive.baseUrl
 | 
			
		||||
			|| `${ config.drive.config.secure ? 'https' : 'http' }://${ config.drive.config.endPoint }${ config.drive.config.port ? ':' + config.drive.config.port : '' }/${ config.drive.bucket }`;
 | 
			
		||||
 | 
			
		||||
		await minio.putObject(config.drive.bucket, obj, fs.createReadStream(path), size, {
 | 
			
		||||
		await minio.putObject(config.drive.bucket, key, fs.createReadStream(path), size, {
 | 
			
		||||
			'Content-Type': type,
 | 
			
		||||
			'Cache-Control': 'max-age=31536000, immutable'
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
		if (thumbnail) {
 | 
			
		||||
			await minio.putObject(config.drive.bucket, thumbnailObj, thumbnail, size, {
 | 
			
		||||
			await minio.putObject(config.drive.bucket, thumbnailKey, thumbnail, size, {
 | 
			
		||||
				'Content-Type': 'image/jpeg',
 | 
			
		||||
				'Cache-Control': 'max-age=31536000, immutable'
 | 
			
		||||
			});
 | 
			
		||||
| 
						 | 
				
			
			@ -58,10 +57,11 @@ async function save(path: string, name: string, type: string, hash: string, size
 | 
			
		|||
			withoutChunks: true,
 | 
			
		||||
			storage: 'minio',
 | 
			
		||||
			storageProps: {
 | 
			
		||||
				id: id
 | 
			
		||||
				key: key,
 | 
			
		||||
				thumbnailKey: thumbnailKey
 | 
			
		||||
			},
 | 
			
		||||
			url: `${ baseUrl }/${ obj }`,
 | 
			
		||||
			thumbnailUrl: thumbnail ? `${ baseUrl }/${ thumbnailObj }` : null
 | 
			
		||||
			url: `${ baseUrl }/${ key }`,
 | 
			
		||||
			thumbnailUrl: thumbnail ? `${ baseUrl }/${ thumbnailKey }` : null
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
		const file = await DriveFile.insert({
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,11 +7,15 @@ export default async function(file: IDriveFile, isExpired = false) {
 | 
			
		|||
	if (file.metadata.storage == 'minio') {
 | 
			
		||||
		const minio = new Minio.Client(config.drive.config);
 | 
			
		||||
 | 
			
		||||
		const obj = `${config.drive.prefix}/${file.metadata.storageProps.id}`;
 | 
			
		||||
		// 後方互換性のため、file.metadata.storageProps.key があるかどうかチェックしています。
 | 
			
		||||
		// 将来的には const obj = file.metadata.storageProps.key; とします。
 | 
			
		||||
		const obj = file.metadata.storageProps.key ? file.metadata.storageProps.key : `${config.drive.prefix}/${file.metadata.storageProps.id}`;
 | 
			
		||||
		await minio.removeObject(config.drive.bucket, obj);
 | 
			
		||||
 | 
			
		||||
		if (file.metadata.thumbnailUrl) {
 | 
			
		||||
			const thumbnailObj = `${config.drive.prefix}/${file.metadata.storageProps.id}-thumbnail`;
 | 
			
		||||
			// 後方互換性のため、file.metadata.storageProps.thumbnailKey があるかどうかチェックしています。
 | 
			
		||||
			// 将来的には const thumbnailObj = file.metadata.storageProps.thumbnailKey; とします。
 | 
			
		||||
			const thumbnailObj = file.metadata.storageProps.thumbnailKey ? file.metadata.storageProps.thumbnailKey : `${config.drive.prefix}/${file.metadata.storageProps.id}-thumbnail`;
 | 
			
		||||
			await minio.removeObject(config.drive.bucket, thumbnailObj);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue