mirror of
https://github.com/sasjs/server.git
synced 2025-12-10 19:34:34 +00:00
39 lines
1.1 KiB
TypeScript
39 lines
1.1 KiB
TypeScript
import multer from 'multer'
|
|
import { uuidv4 } from '@sasjs/utils'
|
|
import { getSessionController } from '.'
|
|
|
|
export class FileUploadController {
|
|
private storage = multer.diskStorage({
|
|
destination: function (req: any, file: any, cb: any) {
|
|
//Sending the intercepted files to the sessions subfolder
|
|
cb(null, req.sasSession.path)
|
|
},
|
|
filename: function (req: any, file: any, cb: any) {
|
|
//req_file prefix + unique hash added to sas request files
|
|
cb(null, `req_file_${uuidv4().replace(/-/gm, '')}`)
|
|
}
|
|
})
|
|
|
|
private upload = multer({ storage: this.storage })
|
|
|
|
//It will intercept request and generate unique uuid to be used as a subfolder name
|
|
//that will store the files uploaded
|
|
public preUploadMiddleware = async (req: any, res: any, next: any) => {
|
|
let session
|
|
|
|
const sessionController = getSessionController()
|
|
session = await sessionController.getSession()
|
|
// marking consumed true, so that it's not available
|
|
// as readySession for any other request
|
|
session.consumed = true
|
|
|
|
req.sasSession = session
|
|
|
|
next()
|
|
}
|
|
|
|
public getMulterUploadObject() {
|
|
return this.upload
|
|
}
|
|
}
|