1
+ 'use strict'
2
+
3
+ const express = require ( 'express' )
4
+ const multer = require ( 'multer' )
5
+ const fileType = require ( 'file-type' )
6
+ const fs = require ( 'fs' )
7
+ const app = express ( )
8
+ const router = express . Router ( )
9
+
10
+ const port = process . env . PORT || 8080 ;
11
+
12
+ const upload = multer ( {
13
+ dest :'images/' ,
14
+ limits : { fileSize : 10000000 , files : 1 } ,
15
+ fileFilter : ( req , file , callback ) => {
16
+
17
+ if ( ! file . originalname . match ( / \. ( j p g | j p e g ) $ / ) ) {
18
+
19
+ return callback ( new Error ( 'Only Images are allowed !' ) , false )
20
+ }
21
+
22
+ callback ( null , true ) ;
23
+ }
24
+ } ) . single ( 'image' )
25
+
26
+ router . post ( '/images/upload' , ( req , res ) => {
27
+
28
+ upload ( req , res , function ( err ) {
29
+
30
+ if ( err ) {
31
+
32
+ res . status ( 400 ) . json ( { message : err . message } )
33
+
34
+ } else {
35
+
36
+ let path = `/images/${ req . file . filename } `
37
+ res . status ( 200 ) . json ( { message : 'Image Uploaded Successfully !' , path : path } )
38
+ }
39
+ } )
40
+ } )
41
+
42
+ router . get ( '/images/:imagename' , ( req , res ) => {
43
+
44
+ let imagename = req . params . imagename
45
+ let imagepath = __dirname + "/images/" + imagename
46
+ let image = fs . readFileSync ( imagepath )
47
+ let mime = fileType ( image ) . mime
48
+
49
+ res . writeHead ( 200 , { 'Content-Type' : mime } )
50
+ res . end ( image , 'binary' )
51
+ } )
52
+
53
+
54
+ app . use ( '/' , router )
55
+
56
+ app . use ( ( err , req , res , next ) => {
57
+
58
+ if ( err . code == 'ENOENT' ) {
59
+
60
+ res . status ( 404 ) . json ( { message : 'Image Not Found !' } )
61
+
62
+ } else {
63
+
64
+ res . status ( 500 ) . json ( { message :err . message } )
65
+ }
66
+ } )
67
+
68
+
69
+ app . listen ( port )
70
+ console . log ( `App Runs on ${ port } ` )
0 commit comments