Switch to 'magic-bytes.js' for file type detection
Updated file type detection to use 'magic-bytes.js' instead of 'file-type' across various modules. Also added missing exports in 'StorageModule' and imported 'DbModule' in 'MachinesModule'.
This commit is contained in:
parent
ef8ba655f3
commit
d909f67a4c
@ -3,9 +3,10 @@ import { DbModule } from "../db/db.module";
|
||||
import { StorageModule } from "../storage/storage.module";
|
||||
import { FilesController } from "./files.controller";
|
||||
import { FilesService } from "./files.service";
|
||||
import { CredentialsModule } from '../credentials/credentials.module';
|
||||
|
||||
@Module({
|
||||
imports: [StorageModule, DbModule],
|
||||
imports: [StorageModule, DbModule, CredentialsModule],
|
||||
controllers: [FilesController],
|
||||
providers: [FilesService],
|
||||
})
|
||||
|
@ -62,7 +62,7 @@ export class FilesService {
|
||||
);
|
||||
const fileNameWithoutSpaces = file.fileName.replace(/\s/g, "_");
|
||||
return new StreamableFile(fileBuffer, {
|
||||
disposition: `attachment; filename="${fileNameWithoutSpaces}.${fileInformation.fileType.ext.toLowerCase()}"`,
|
||||
disposition: `attachment; filename="${fileNameWithoutSpaces}.${fileInformation.fileType[0].extension.toLowerCase()}"`,
|
||||
});
|
||||
}
|
||||
|
||||
@ -130,7 +130,7 @@ export class FilesService {
|
||||
.values({
|
||||
fileName: data.get("fileName") as string,
|
||||
checksum: saveResult.fileChecksum,
|
||||
extension: saveResult.fileType.ext,
|
||||
extension: saveResult.fileType[0].extension,
|
||||
fileSize: saveResult.fileSize,
|
||||
fileType: saveResult.fileType.mime,
|
||||
isRestricted: Boolean(data.get("isRestricted")),
|
||||
|
@ -1,8 +1,10 @@
|
||||
import { Module } from "@nestjs/common";
|
||||
import { MachinesController } from "apps/backend/src/app/machines/machines.controller";
|
||||
import { MachinesService } from "apps/backend/src/app/machines/machines.service";
|
||||
import { DbModule } from 'apps/backend/src/app/db/db.module';
|
||||
|
||||
@Module({
|
||||
imports: [DbModule],
|
||||
controllers: [MachinesController],
|
||||
providers: [MachinesService],
|
||||
})
|
||||
|
@ -1,9 +1,10 @@
|
||||
import { Module } from "@nestjs/common";
|
||||
import { DbModule } from "apps/backend/src/app/db/db.module";
|
||||
import { StorageService } from "apps/backend/src/app/storage/storage.service";
|
||||
import { DbModule } from "../db/db.module";
|
||||
import { StorageService } from "../storage/storage.service";
|
||||
|
||||
@Module({
|
||||
imports: [DbModule],
|
||||
providers: [StorageService],
|
||||
exports: [StorageService]
|
||||
})
|
||||
export class StorageModule {}
|
||||
|
@ -16,7 +16,7 @@ import {
|
||||
} from "apps/backend/src/app/db/schema";
|
||||
import { IFileInformation } from "apps/backend/src/app/storage/storage.types";
|
||||
import { eq } from "drizzle-orm";
|
||||
import FileType from "file-type";
|
||||
import { filetypeinfo } from 'magic-bytes.js';
|
||||
|
||||
@Injectable()
|
||||
export class StorageService {
|
||||
@ -61,7 +61,7 @@ export class StorageService {
|
||||
return allowedMime.has(currentMime);
|
||||
}
|
||||
|
||||
const fileType = await FileType.fileTypeFromBuffer(file);
|
||||
const fileType = filetypeinfo(file);
|
||||
|
||||
// Array of MIMEs with possible duplicate field
|
||||
const _mimes: Array<string> = [];
|
||||
@ -106,7 +106,7 @@ export class StorageService {
|
||||
});
|
||||
}
|
||||
|
||||
if (!checkMime(mimeSet, fileType.mime))
|
||||
if (!checkMime(mimeSet, fileType[0].mime))
|
||||
throw new BadRequestException({
|
||||
cause: "MIME type",
|
||||
description: `Invalid MIME type. Allowed MIME types are: ${[...mimeSet].join(", ")}.`,
|
||||
@ -164,15 +164,15 @@ export class StorageService {
|
||||
fileDisplayName: string,
|
||||
isDocumentation?: boolean,
|
||||
): Promise<IFileInformation> {
|
||||
const fileType = await FileType.fileTypeFromBuffer(file);
|
||||
const fileType = filetypeinfo(file);
|
||||
const checksum = await this.getChecksum(file);
|
||||
const fileName = `${isDocumentation ? "doc" : "file"}-${checksum}.${fileType.ext.toLowerCase()}`;
|
||||
const fileName = `${isDocumentation ? "doc" : "file"}-${checksum}.${fileType[0].extension.toLowerCase()}`;
|
||||
return {
|
||||
fileName: fileName,
|
||||
fileDisplayName: fileDisplayName,
|
||||
fileSize: file.byteLength,
|
||||
fileChecksum: checksum,
|
||||
fileType: fileType,
|
||||
fileType: fileType[0],
|
||||
isDocumentation: isDocumentation || false,
|
||||
};
|
||||
}
|
||||
|
@ -1,12 +1,12 @@
|
||||
import { StreamableFile } from "@nestjs/common";
|
||||
import FileType from "file-type";
|
||||
import { GuessedFile } from 'magic-bytes.js/dist/model/tree';
|
||||
|
||||
export interface IFileInformation {
|
||||
fileDisplayName: string;
|
||||
fileName: string;
|
||||
fileChecksum: string;
|
||||
isDocumentation: boolean;
|
||||
fileType: FileType.FileTypeResult;
|
||||
fileType: GuessedFile;
|
||||
fileSize: number;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user