Files
WrenchBoardMediaMicro/index.js
T
CHIEFSOFT\ameye 67b5230dbc cors
2024-03-23 20:39:28 -04:00

66 lines
1.7 KiB
JavaScript

const express = require('express')
const fs = require('fs')
const app = express()
const cors = require("cors");
const videoFileMap={
'cdn':'videos/v1.mp4',
'generate-pass':'videos/v2.mp4',
'get-post':'videos/v3.mp4',
}
console.log("Finding File");
var corsOptions = {
origin: 'http://127.0.0.1:3000/',
optionsSuccessStatus: 200 // some legacy browsers (IE11, various SmartTVs) choke on 204
}
app.use(cors(corsOptions));
// ,cors(corsOptions)
app.get('/videos/:filename', (req, res)=>{
const fileName = req.params.filename;
const filePath = videoFileMap[fileName]
if(!filePath){
console.log("Finding File Not Found ", filePath);
return res.status(404).send('File not found')
}
console.log("Finding File Found ", filePath);
const stat = fs.statSync(filePath);
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(filePath, {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(filePath).pipe(res)
}
})
app.listen(3036, ()=>{
console.log('server is listening on post 3036')
})