@fleye-me/nestjs-storage-engine
v0.2.10
Published
Upload files to Google Cloud Storage or save in to local disk
Downloads
88
Readme
Features
- Upload files
- Delete files uploaded
- Resize Image
- Resize and upload images
- Upload files in different sizes
Index
Installation
npm i @fleye-me/nestjs-storage-engine
or
yarn add @fleye-me/nestjs-storage-engine
Getting Started
Async import using Google Cloud Storage config
Update app.module.ts with:
import { StorageEngineModule } from '@fleye-me/nestjs-storage-engine';
@Module({
imports: [
StorageEngineModule.registerAsync({
imports: [ConfigModule],
inject: [ConfigService],
useFactory(config: ConfigService) {
return {
providerEngineName: 'gcp',
gcp: {
projectId: config.get('GOOGLE_CLOUD_PROJECT_ID'),
credentialsKeyPath: config.get('GOOGLE_CLOUD_CREDENTIALS'),
bucket: config.get('GOOGLE_CLOUD_BUCKET'),
},
};
},
}),
],
})
YOUR_GOOGLE_CLOUD_CREDENTIALS = path to your google service account file that gives you permission to upload files to a bucket
Update .env with:
# Storage engine
STORAGE_ENGINE=gcp # disk or gcp
# Google Cloud
GOOGLE_CLOUD_BUCKET=
GOOGLE_CLOUD_PROJECT_ID=
GOOGLE_CLOUD_CREDENTIALS=
Async import using Local Disk config
Update app.module.ts with:
import { StorageEngineModule } from '@fleye-me/nestjs-storage-engine';
import * as path from 'path'
@Module({
imports: [
StorageEngineModule.registerAsync({
imports: [ConfigModule],
inject: [ConfigService],
useFactory(config: ConfigService) {
return {
providerEngineName: 'disk',
disk: {
// below is path to save files
uploadsFolder: path.resolve(__dirname, '..', 'uploads'),
serverStaticFilesBaseUrl: config.get('SERVER_STATIC_FILES_BASE_URL'),
}
};
},
}),
],
})
Update main.ts with:
import { NestFactory } from "@nestjs/core"
import * as path from "path"
const app = (await NestFactory.create) < NestExpressApplication > AppModule
app.useStaticAssets(path.join(__dirname, "..", "uploads"), {
prefix: "/static/",
})
Update .env with:
# Storage engine
STORAGE_ENGINE=disk # disk or gcp
SERVER_STATIC_FILES_BASE_URL=http://localhost:8080/static
Using the service
import { StorageEngineService } from '@fleye-me/nestjs-storage-engine';
export class YourService {
constructor(
private storageService: StorageEngineService,
) {}
}
Upload files
async uploadFile(buffer: Buffer | string) {
const fileResult = await this.storageService.uploadFile({
filename: 'example',
path: 'upload-example',
buffer,
mimeType: 'application/pdf',
});
return fileResult;
}
Output
{
"url": "https://storage.googleapis.com/example/upload-example/example.pdf",
"filename": "example.pdf",
"originalFilename": "example.pdf",
"path": "upload-example"
}
Delete Files Uploaded
async deleteFile() {
const deleteFile = await this.storageService.deleteFile({
path: 'upload-example',
filename: 'example.pdf',
});
return deleteFile;
}
Output
true
Resize Image
async resizeImage(
buffer: Buffer | string,
) {
const fileResults = await this.storageService.resizeImage(
{
buffer: image,
},
{
width: 600,
height: 600,
},
));
return fileResults;
}
Resize Image And Upload
import { SizeOptionsDto } from '@fleye-me/nestjs-storage-engine';
async resizeImageAndUpload(
buffer: Buffer | string,
sizes?: SizeOptionsDto[]
) {
const fileResults = await this.storageService.resizeImageAndUpload({
buffer,
filename: 'example',
mimeType: 'application/pdf',
path: 'invoice',
},
[
{
width: sizes.width,
height: sizes.height,
}
]
);
return fileResults;
}