| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- const express = require("express");
- var fs = require('fs');
- var path = require('path');
- const cors = require('cors');
- const router = express.Router();
- var mime = {
- html: 'text/html',
- txt: 'text/plain',
- css: 'text/css',
- gif: 'image/gif',
- jpg: 'image/jpeg',
- png: 'image/png',
- svg: 'image/svg+xml',
- js: 'application/javascript',
- mp4: 'video/mp4',
- ogv: 'video/ogg'
- };
- // Read (GET) an asset
- router.get("/images/projects/:projectId/:imagePath", async (req, res) => {
- var reqpath = req.url.toString().split('?')[0];
- var file = "./assets" + reqpath.replace(/\/$/, '');
- var scale = parseInt(req.query.w);
- // Serve a scaled image if width has been specified.
- if (parseInt(req.query.w) >= 0){
- var width = 100;
- for (var i = 100; i < 1000; i += 100){
- width = i;
- if (width >= scale) break;
- }
- file = file.replace("/assets/images/", "/assets/images_scaled/x" + width + "/");
- }
- var type = mime[path.extname(file).slice(1)] || 'text/plain';
- var s = fs.createReadStream(file);
- s.on('open', function () {
- res.setHeader('Content-Type', type);
- res.setHeader('Accept-Ranges', 'bytes');
- res.setHeader('Cross-Origin-Resource-Policy', 'cross-origin');
- s.pipe(res);
- });
- s.on('error', function () {
- res.setHeader('Content-Type', 'text/plain');
- res.statusCode = 404;
- res.end('Not found');
- });
- });
- router.get("/images/profile/:imagePath", async (req, res) => {
- var reqpath = req.url.toString().split('?')[0];
- var file = "./assets" + reqpath.replace(/\/$/, '');
- var scale = parseInt(req.query.w);
- // Serve a scaled image if width has been specified.
- if (parseInt(req.query.w) >= 0){
- var width = 100;
- for (var i = 100; i < 1000; i += 100){
- width = i;
- if (width >= scale) break;
- }
- file = file.replace("/assets/images/", "/assets/images_scaled/x" + width + "/");
- }
- var type = mime[path.extname(file).slice(1)] || 'text/plain';
- var s = fs.createReadStream(file);
- s.on('open', function () {
- res.setHeader('Content-Type', type);
- res.setHeader('Cross-Origin-Resource-Policy', 'cross-origin');
- s.pipe(res);
- });
- s.on('error', function () {
- res.setHeader('Content-Type', 'text/plain');
- res.statusCode = 404;
- res.end('Not found');
- });
- });
- module.exports = router;
|