Skip to content

Commit aba965e

Browse files
committed
chore: update demo server code
1 parent 261d15c commit aba965e

File tree

1 file changed

+38
-27
lines changed

1 file changed

+38
-27
lines changed

examples/server.js

Lines changed: 38 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,44 @@
1-
const { multipart, tus, uploadx } = require('@uploadx/core');
2-
const express = require('express');
3-
const cors = require('cors');
1+
const url = require('url');
2+
const { tmpdir } = require('os');
3+
const { createServer } = require('http');
4+
const { DiskStorage, Multipart, Tus, Uploadx } = require('@uploadx/core');
45

5-
const PORT = process.env.PORT || 3002;
6-
const app = express();
6+
const port = process.env.PORT || 3002;
77

8-
function buildRedirectUrl(req) {
9-
const { uploadType = 'uploadx' } = req.query;
10-
return `/${uploadType}`;
11-
}
8+
const directory = `${tmpdir()}/uploadx/`;
9+
const path = '/files';
10+
const pathRegexp = new RegExp(`^${path}([/?]|$)`);
1211

13-
const apiRedirect = (req, res, next) => {
14-
res.redirect(308, buildRedirectUrl(req));
15-
next();
16-
};
17-
18-
const opts = {
19-
directory: 'upload',
20-
maxUploadSize: '2GB',
12+
const storage = new DiskStorage({
13+
directory,
14+
path,
15+
maxUploadSize: '1GB',
2116
allowMIME: ['video/*', 'image/*'],
22-
expiration: { maxAge: '1h', purgeInterval: '10min' },
23-
logLevel: process.env.LOG_LEVEL || 'info'
24-
};
25-
26-
app.use(cors());
27-
app.use(apiRedirect);
17+
logLevel: process.env.LOG_LEVEL || 'info',
18+
expiration: { maxAge: '1h', purgeInterval: '30min' }
19+
});
2820

29-
app.use('/uploadx', uploadx(opts));
30-
app.use('/tus', tus(opts));
31-
app.use('/multipart', multipart({ ...opts, maxUploadSize: '100MB' }));
21+
const upx = new Uploadx({ storage });
22+
const tus = new Tus({ storage });
23+
const mpt = new Multipart({ storage });
3224

33-
app.listen(PORT, () => console.log('listening on port:', PORT));
25+
createServer((req, res) => {
26+
const { pathname, query = { uploadType: '' } } = url.parse(req.url, true);
27+
if (pathRegexp.test(pathname)) {
28+
switch (query.uploadType) {
29+
case 'multipart':
30+
mpt.handle(req, res);
31+
break;
32+
case 'tus':
33+
tus.handle(req, res);
34+
break;
35+
default:
36+
upx.handle(req, res);
37+
break;
38+
}
39+
} else {
40+
res.setHeader('Access-Control-Allow-Origin', '*');
41+
res.statusCode = 404;
42+
res.end();
43+
}
44+
}).listen(port, () => console.info(`listening on port: ${port}`));

0 commit comments

Comments
 (0)