From 2c9f2a3abf1427fd397186226db555d9c15c4f90 Mon Sep 17 00:00:00 2001 From: "CHIEFSOFT\\ameye" Date: Sun, 26 May 2024 12:49:43 -0400 Subject: [PATCH] get media file --- index.js | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 72 insertions(+), 1 deletion(-) diff --git a/index.js b/index.js index 1fdb032..c7425cf 100644 --- a/index.js +++ b/index.js @@ -312,10 +312,81 @@ app.get('/videos/:filename', (req, res)=>{ } }); +}) + +app.get('/myfile/:filename', (req, res)=>{ + const fileName = req.params.filename; + let findFilename = 'What Is Single Sign-on (SSO)? How It Works-(1080p25).mp4'; + let memberUID = ''; + // var findFilename = ''; +//c35c32bc-9ce4-4ca5-9afc-1ecddfd649f5 + let Qstring = "SELECT mf.*, m.uid AS member_uid FROM members_myfiles mf LEFT JOIN members m ON m.id=mf.member_id WHERE mf.uid='"+fileName+"'"; + console.log("Qstring -> ", Qstring); + db.query(Qstring, function (err, result) { + try { + console.log("BEFORE ERR CHECK -> " , result); + if (err){ + console.log("IN ERR CHECK -> " , err); + throw err; + } + // let resultItem = { + // "result": result.rows, + // "total_record": result.rowCount + // } + console.log("THIS IS RESULT --> ",result.rows[0].filename); + console.log("THIS IS RESULT COUNT --> ",result.rowCount); + if ( result.rowCount === 1){ + findFilename = result.rows[0].filename; + memberUID = result.rows[0].member_uid; + } + + // $selectedFile = $this->savePath.'PROFILE/'.$out["member_uid"]."/MYFILES/". $out["saved_file_name"]; + + //const filePath = videoFileMap[fileName] + const completeFile = process.env.COMMON_MYFILE_PATH+"/"+memberUID+"/MYFILES/" + findFilename; + if(!completeFile){ + console.log("Finding File Not Found ", completeFile); + return res.status(404).send('File not found') + } + + console.log("Finding File Found ", completeFile); + + const stat = fs.statSync(completeFile); + const fileSize = stat.size; + const range = req.headers.range; + + if(range){ + const parts = range.replace(/bytes=/, '').split('-') + const start = parseInt(parts[0], 10); + const end = parts[1] ? parseInt(parts[1], 10) : fileSize - 1; + + const chunksize = end - start + 1; + const file = fs.createReadStream(completeFile, {start, end}); + const head = { + 'Content-Range': `bytes ${start}-${end}/${fileSize}`, + 'Accept-Ranges': 'bytes', + 'Content-Length': chunksize, + 'Content-Type': 'video/mp4' + }; + res.writeHead(206, head); + file.pipe(res); + } + else{ + const head = { + 'Content-Length': fileSize, + 'Content-Type': 'video/mp4' + }; + res.writeHead(200, head); + fs.createReadStream(completeFile).pipe(res) + } + } catch (e) { + console.log("ERR->",e.message); + } + }); + }) - app.listen(3036, ()=>{ console.log('server is listening on post 3036') }) \ No newline at end of file