Skip to content

Commit

Permalink
API starting point
Browse files Browse the repository at this point in the history
  • Loading branch information
icemedia001 committed Dec 11, 2023
1 parent e79b55b commit 1e8c28e
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 27 deletions.
27 changes: 18 additions & 9 deletions src/App/Upload/upload.controller.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,26 @@
import { Controller, Post, UploadedFile, UseInterceptors, Res } from '@nestjs/common';
import { FileInterceptor } from '@nestjs/platform-express';
import {
Controller,
Post,
UploadedFile,
UseInterceptors,
Res,
} from '@nestjs/common'
import { FileInterceptor } from '@nestjs/platform-express'
// import { Multer } from 'multer';
import { Response } from 'express';
import { Response } from 'express'

@Controller('file')
export class UploadController {
@Post('upload')
@UseInterceptors(FileInterceptor('file'))
async uploadFile(@UploadedFile() file: Express.Multer.File, @Res() res: Response) {
console.log(file);

res.json({ message: 'File uploaded successfully' });
@UseInterceptors(FileInterceptor('file', { dest: './uploads'}))
async uploadFile(
@UploadedFile() file: Express.Multer.File,
@Res() res: Response,
) {
console.log(file)

res.json({ message: 'File uploaded successfully' })
}
}

export default UploadController;
export default UploadController
14 changes: 8 additions & 6 deletions src/App/Upload/upload.resolver.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
import { Resolver, Mutation, Args } from '@nestjs/graphql';
import { GraphQLUpload } from 'graphql-upload';
import UploadService from './upload.service';
import { Resolver, Mutation, Args } from '@nestjs/graphql'
import { GraphQLUpload } from 'graphql-upload'
import UploadService from './upload.service'

@Resolver()
export default class UploadResolver {
constructor(private readonly uploadService: UploadService) {}

@Mutation(() => String)
async uploadFile(@Args({ name: 'file', type: () => GraphQLUpload }) file: any): Promise<string> {
const result = await this.uploadService.processFile(file);
async uploadFile(
@Args({ name: 'file', type: () => GraphQLUpload }) file: any,
): Promise<string> {
const result = await this.uploadService.processFile(file)

return result;
return result
}
}
24 changes: 12 additions & 12 deletions src/App/Upload/upload.service.ts
Original file line number Diff line number Diff line change
@@ -1,24 +1,24 @@
import { Injectable } from '@nestjs/common';
import * as fs from 'fs';
import path from 'path';
import { Injectable } from '@nestjs/common'
import * as fs from 'fs'
import path from 'path'

@Injectable()
export default class UploadService {
async processFile(file: Express.Multer.File): Promise<string> {
try {
const uploadDirectory = path.join(__dirname, 'Upload');
const uploadDirectory = path.join(__dirname, 'Upload')
if (!fs.existsSync(uploadDirectory)) {
fs.mkdirSync(uploadDirectory);
fs.mkdirSync(uploadDirectory)
}
const filename = `${Date.now()}_${file.originalname}`;
const filename = `${Date.now()}_${file.originalname}`

const filePath = path.join(uploadDirectory, filename);
fs.writeFileSync(filePath, file.buffer);
const filePath = path.join(uploadDirectory, filename)
fs.writeFileSync(filePath, file.buffer)

return 'File has been saved successfully';
return 'File has been saved successfully'
} catch (error) {
console.error('Error:', error);
throw new Error('Failed to save the file');
console.error('Error:', error)
throw new Error('Failed to save the file')
}
}
}
}

0 comments on commit 1e8c28e

Please sign in to comment.