Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- **@ запускаем readableStream по закачке файла на сервер. Ловим первые данные и определяем по ним тип файла.
- **@ Если файл типа image - то заливаем его в базу.
- import { fromBuffer } from 'file-type';
- import { LogicError } from '../../../../../utils/LogicError';
- import { PHOTO_URL_NOT_IMAGE } from 'src/error-codes.config';
- export const downloadByPhotoUrl = {
- async handler(payload: { photoUrl: string; productId: string }) {
- const { photoUrl, productId } = payload;
- const splitUrl = photoUrl.split('/');
- const filename = splitUrl[splitUrl.length - 1];
- const stream = this.gotInstanse.stream(photoUrl);
- stream.on('data', async data => {
- try {
- stream.pause();
- const fileType = await fromBuffer(data);
- // сохраняем файл если это картинка, если нет ничего не делаем.
- if (fileType && fileType?.mime?.split('/')[0] === 'image') {
- const fileId = await this.broker.call('files.upload', this.gotInstanse.stream(photoUrl), {
- meta: {
- type: fileType.ext || '',
- filename: filename || '',
- },
- });
- this.broker.call('products.update', { id: productId, photoId: fileId });
- } else {
- this.broker.call('products.update', { id: productId, photoUrl: null });
- }
- } catch (e) {
- throw new LogicError(PHOTO_URL_NOT_IMAGE, e.message);
- }
- });
- },
- };
Add Comment
Please, Sign In to add comment