Image for web publish (#3402)
* Image for Web * Add comment * Make main to original
This commit is contained in:
		
							parent
							
								
									0863e5d379
								
							
						
					
					
						commit
						bcb04924ff
					
				
					 14 changed files with 283 additions and 43 deletions
				
			
		| 
						 | 
				
			
			@ -77,5 +77,5 @@ export default define(meta, (ps, user) => new Promise(async (res, rej) => {
 | 
			
		|||
			sort: sort
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
	res(await packMany(files));
 | 
			
		||||
	res(await packMany(files, { detail: false, self: true }));
 | 
			
		||||
}));
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -32,6 +32,6 @@ export default define(meta, (ps, user) => new Promise(async (res, rej) => {
 | 
			
		|||
	if (file === null) {
 | 
			
		||||
		res({ file: null });
 | 
			
		||||
	} else {
 | 
			
		||||
		res({ file: await pack(file) });
 | 
			
		||||
		res({ file: await pack(file, { self: true }) });
 | 
			
		||||
	}
 | 
			
		||||
}));
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -74,7 +74,7 @@ export default define(meta, (ps, user, app, file, cleanup) => new Promise(async
 | 
			
		|||
 | 
			
		||||
		cleanup();
 | 
			
		||||
 | 
			
		||||
		res(pack(driveFile));
 | 
			
		||||
		res(pack(driveFile, { self: true }));
 | 
			
		||||
	} catch (e) {
 | 
			
		||||
		console.error(e);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -31,5 +31,5 @@ export default define(meta, (ps, user) => new Promise(async (res, rej) => {
 | 
			
		|||
			'metadata.folderId': ps.folderId
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
	res(await Promise.all(files.map(file => pack(file))));
 | 
			
		||||
	res(await Promise.all(files.map(file => pack(file, { self: true }))));
 | 
			
		||||
}));
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -41,7 +41,8 @@ export default define(meta, (ps, user) => new Promise(async (res, rej) => {
 | 
			
		|||
 | 
			
		||||
	// Serialize
 | 
			
		||||
	const _file = await pack(file, {
 | 
			
		||||
		detail: true
 | 
			
		||||
		detail: true,
 | 
			
		||||
		self: true
 | 
			
		||||
	});
 | 
			
		||||
 | 
			
		||||
	res(_file);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -111,7 +111,7 @@ export default define(meta, (ps, user) => new Promise(async (res, rej) => {
 | 
			
		|||
	});
 | 
			
		||||
 | 
			
		||||
	// Serialize
 | 
			
		||||
	const fileObj = await pack(file);
 | 
			
		||||
	const fileObj = await pack(file, { self: true });
 | 
			
		||||
 | 
			
		||||
	// Response
 | 
			
		||||
	res(fileObj);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -50,5 +50,5 @@ export const meta = {
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
export default define(meta, (ps, user) => new Promise(async (res, rej) => {
 | 
			
		||||
	res(pack(await uploadFromUrl(ps.url, user, ps.folderId, null, ps.isSensitive, ps.force)));
 | 
			
		||||
	res(pack(await uploadFromUrl(ps.url, user, ps.folderId, null, ps.isSensitive, ps.force), { self: true }));
 | 
			
		||||
}));
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -65,5 +65,5 @@ export default define(meta, (ps, user) => new Promise(async (res, rej) => {
 | 
			
		|||
			sort: sort
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
	res(await packMany(files));
 | 
			
		||||
	res(await packMany(files, { self: true }));
 | 
			
		||||
}));
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,6 +3,7 @@ import * as send from 'koa-send';
 | 
			
		|||
import * as mongodb from 'mongodb';
 | 
			
		||||
import DriveFile, { getDriveFileBucket } from '../../models/drive-file';
 | 
			
		||||
import DriveFileThumbnail, { getDriveFileThumbnailBucket } from '../../models/drive-file-thumbnail';
 | 
			
		||||
import DriveFileWebpublic, { getDriveFileWebpublicBucket } from '../../models/drive-file-webpublic';
 | 
			
		||||
 | 
			
		||||
const assets = `${__dirname}/../../server/file/assets/`;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -41,6 +42,11 @@ export default async function(ctx: Koa.Context) {
 | 
			
		|||
	}
 | 
			
		||||
 | 
			
		||||
	const sendRaw = async () => {
 | 
			
		||||
		if (file.metadata && file.metadata.accessKey && file.metadata.accessKey != ctx.query['original']) {
 | 
			
		||||
			ctx.status = 403;
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		const bucket = await getDriveFileBucket();
 | 
			
		||||
		const readable = bucket.openDownloadStream(fileId);
 | 
			
		||||
		readable.on('error', commonReadableHandlerGenerator(ctx));
 | 
			
		||||
| 
						 | 
				
			
			@ -60,6 +66,19 @@ export default async function(ctx: Koa.Context) {
 | 
			
		|||
		} else {
 | 
			
		||||
			await sendRaw();
 | 
			
		||||
		}
 | 
			
		||||
	} else if ('web' in ctx.query) {
 | 
			
		||||
		const web = await DriveFileWebpublic.findOne({
 | 
			
		||||
			'metadata.originalId': fileId
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
		if (web != null) {
 | 
			
		||||
			ctx.set('Content-Type', file.contentType);
 | 
			
		||||
 | 
			
		||||
			const bucket = await getDriveFileWebpublicBucket();
 | 
			
		||||
			ctx.body = bucket.openDownloadStream(web._id);
 | 
			
		||||
		} else {
 | 
			
		||||
			await sendRaw();
 | 
			
		||||
		}
 | 
			
		||||
	} else {
 | 
			
		||||
		if ('download' in ctx.query) {
 | 
			
		||||
			ctx.set('Content-Disposition', 'attachment');
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue