|
|
@@ -301,7 +301,7 @@ export class VideoMediaService {
|
|
|
return Buffer.isBuffer(buffer) ? buffer : Buffer.from(buffer);
|
|
|
}
|
|
|
|
|
|
- private async readUploadBuffer(file: MultipartFile): Promise<Buffer> {
|
|
|
+ private async readUploadBuffer(file: any): Promise<Buffer> {
|
|
|
const toBuffer = (value: unknown): Buffer | undefined => {
|
|
|
if (!value) return undefined;
|
|
|
if (Buffer.isBuffer(value)) return value;
|
|
|
@@ -311,32 +311,28 @@ export class VideoMediaService {
|
|
|
return undefined;
|
|
|
};
|
|
|
|
|
|
- const source = (file as any)?.file as NodeJS.ReadableStream | undefined;
|
|
|
- if (!source) {
|
|
|
- const buffer = toBuffer(file);
|
|
|
+ if (typeof file?.toBuffer === 'function') {
|
|
|
+ const raw = await file.toBuffer();
|
|
|
+ const buffer = toBuffer(raw);
|
|
|
if (buffer) return buffer;
|
|
|
}
|
|
|
- if (!source) {
|
|
|
- const maybeBuffer = toBuffer(
|
|
|
- (file as any).buffer ??
|
|
|
- (file as any).value ??
|
|
|
- (file as any).data ??
|
|
|
- undefined,
|
|
|
- );
|
|
|
- if (maybeBuffer) return maybeBuffer;
|
|
|
- if (typeof (file as any).toBuffer === 'function') {
|
|
|
- const buffer = await (file as any).toBuffer();
|
|
|
- if (Buffer.isBuffer(buffer)) return buffer;
|
|
|
- }
|
|
|
- }
|
|
|
- if (!source) {
|
|
|
+
|
|
|
+ const direct = toBuffer(file);
|
|
|
+ if (direct) return direct;
|
|
|
+
|
|
|
+ const fallback = toBuffer(file?.buffer ?? file?.value ?? file?.data);
|
|
|
+ if (fallback) return fallback;
|
|
|
+
|
|
|
+ const stream = file?.file as NodeJS.ReadableStream | undefined;
|
|
|
+ if (!stream) {
|
|
|
throw new BadRequestException('Upload stream is missing');
|
|
|
}
|
|
|
|
|
|
const chunks: Buffer[] = [];
|
|
|
- for await (const chunk of source) {
|
|
|
+ for await (const chunk of stream) {
|
|
|
chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
|
|
|
}
|
|
|
+
|
|
|
return Buffer.concat(chunks);
|
|
|
}
|
|
|
|
|
|
@@ -345,6 +341,9 @@ export class VideoMediaService {
|
|
|
if (!buffer.length) {
|
|
|
throw new BadRequestException('Empty file');
|
|
|
}
|
|
|
+ this.logger.log(
|
|
|
+ `[importExcelTags] upload buffer bytes=${buffer.length} filename=${(file as any)?.filename ?? 'unknown'} mimetype=${(file as any)?.mimetype ?? 'unknown'}`,
|
|
|
+ );
|
|
|
|
|
|
const rowsAH: Array<{ idRaw: unknown; tagsRaw: unknown }> = [];
|
|
|
|