forked from oat/in-the-database-2
		
	we uploadin files now
This commit is contained in:
		
							parent
							
								
									69d93c1f9f
								
							
						
					
					
						commit
						665a372f5e
					
				
					 6 changed files with 71 additions and 25 deletions
				
			
		
							
								
								
									
										29
									
								
								package-lock.json
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										29
									
								
								package-lock.json
									
										
									
										generated
									
									
									
								
							|  | @ -483,6 +483,14 @@ | ||||||
|       "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.4.tgz", |       "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.4.tgz", | ||||||
|       "integrity": "sha512-S/yKGU1syOMzO86+dGpg2qGoDL0zvzcb262G+gqEy6TgP6rt6z6qxSFX/8X6vLC91P7G7C3nLs0+bvDzmvBA3Q==" |       "integrity": "sha512-S/yKGU1syOMzO86+dGpg2qGoDL0zvzcb262G+gqEy6TgP6rt6z6qxSFX/8X6vLC91P7G7C3nLs0+bvDzmvBA3Q==" | ||||||
|     }, |     }, | ||||||
|  |     "busboy": { | ||||||
|  |       "version": "0.3.1", | ||||||
|  |       "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.3.1.tgz", | ||||||
|  |       "integrity": "sha512-y7tTxhGKXcyBxRKAni+awqx8uqaJKrSFSNFSeRG5CsWNdmy2BIK+6VGWEW7TZnIO/533mtMEA4rOevQV815YJw==", | ||||||
|  |       "requires": { | ||||||
|  |         "dicer": "0.3.0" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "bytes": { |     "bytes": { | ||||||
|       "version": "3.1.0", |       "version": "3.1.0", | ||||||
|       "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", |       "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", | ||||||
|  | @ -665,6 +673,14 @@ | ||||||
|       "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", |       "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", | ||||||
|       "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" |       "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" | ||||||
|     }, |     }, | ||||||
|  |     "dicer": { | ||||||
|  |       "version": "0.3.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.3.0.tgz", | ||||||
|  |       "integrity": "sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA==", | ||||||
|  |       "requires": { | ||||||
|  |         "streamsearch": "0.1.2" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "dir-glob": { |     "dir-glob": { | ||||||
|       "version": "3.0.1", |       "version": "3.0.1", | ||||||
|       "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", |       "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", | ||||||
|  | @ -922,6 +938,14 @@ | ||||||
|         "vary": "~1.1.2" |         "vary": "~1.1.2" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "express-fileupload": { | ||||||
|  |       "version": "1.2.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/express-fileupload/-/express-fileupload-1.2.0.tgz", | ||||||
|  |       "integrity": "sha512-oe4WpKcSppXnl5peornawWUa6tKmIc1/kJxMNRGJR1A0v4zyLL6VsFR6wZ8P2a4Iq3aGx8xae3Vlr+MOMQhFPw==", | ||||||
|  |       "requires": { | ||||||
|  |         "busboy": "^0.3.1" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "fast-deep-equal": { |     "fast-deep-equal": { | ||||||
|       "version": "3.1.3", |       "version": "3.1.3", | ||||||
|       "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", |       "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", | ||||||
|  | @ -1812,6 +1836,11 @@ | ||||||
|       "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", |       "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", | ||||||
|       "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" |       "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" | ||||||
|     }, |     }, | ||||||
|  |     "streamsearch": { | ||||||
|  |       "version": "0.1.2", | ||||||
|  |       "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", | ||||||
|  |       "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=" | ||||||
|  |     }, | ||||||
|     "string-width": { |     "string-width": { | ||||||
|       "version": "3.1.0", |       "version": "3.1.0", | ||||||
|       "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", |       "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", | ||||||
|  |  | ||||||
|  | @ -14,6 +14,7 @@ | ||||||
|     "@types/express": "github:types/express", |     "@types/express": "github:types/express", | ||||||
|     "@types/mongoose": "^5.7.36", |     "@types/mongoose": "^5.7.36", | ||||||
|     "express": "^4.17.1", |     "express": "^4.17.1", | ||||||
|  |     "express-fileupload": "^1.2.0", | ||||||
|     "mongoose": "^5.10.2", |     "mongoose": "^5.10.2", | ||||||
|     "mongoose-int32": "^0.4.1", |     "mongoose-int32": "^0.4.1", | ||||||
|     "typescript": "^4.0.2", |     "typescript": "^4.0.2", | ||||||
|  |  | ||||||
|  | @ -1,16 +1,23 @@ | ||||||
| <html> | <html> | ||||||
| 	<head> | 	<head> | ||||||
| 		<title>file upload</title> | 		<title>file upload</title> | ||||||
|  | 		<script> | ||||||
|  | 			async function upload() { | ||||||
|  | 				let file = document.getElementById('file'); | ||||||
|  | 
 | ||||||
|  | 				console.log(file.files[0]); | ||||||
|  | 
 | ||||||
|  | 				await fetch('/upload', { | ||||||
|  | 					method: 'POST', | ||||||
|  | 					body: file.files[0] | ||||||
|  | 				}); | ||||||
|  | 			} | ||||||
|  | 		</script> | ||||||
| 	</head> | 	</head> | ||||||
| 	<body> | 	<body> | ||||||
| 		<form action="/upload" method="post"> | 		<form method="post" encType="multipart/form-data"> | ||||||
| 			<label for="title">Title: </label><br> | 			<input type="file" name="file" id="file"><br> | ||||||
| 			<input type="text" id="title" name="title"><br> | 			<input type="submit" value="upload" onclick="upload()"> | ||||||
| 			<label for="artist">Artist: </label><br> |  | ||||||
| 			<input type="text" id="artist" name="artist"><br> |  | ||||||
| 			<label for="credit">Credit: </label><br> |  | ||||||
| 			<input type="text" id="credit" name="credit"><br> |  | ||||||
| 			<input type="submit" value="upload"> |  | ||||||
| 		</form> | 		</form> | ||||||
| 	</body> | 	</body> | ||||||
| </html> | </html> | ||||||
							
								
								
									
										22
									
								
								src/index.ts
									
										
									
									
									
								
							
							
						
						
									
										22
									
								
								src/index.ts
									
										
									
									
									
								
							|  | @ -2,10 +2,13 @@ import * as express from 'express'; | ||||||
| import * as mongoose from 'mongoose'; | import * as mongoose from 'mongoose'; | ||||||
| import * as fs from 'fs'; | import * as fs from 'fs'; | ||||||
| import * as winston from 'winston'; | import * as winston from 'winston'; | ||||||
|  | import * as fileUpload from 'express-fileupload'; | ||||||
| 
 | 
 | ||||||
| import * as format from './lib/format'; | import * as format from './lib/format'; | ||||||
| import { File } from './schema'; | import { File } from './schema'; | ||||||
| 
 | 
 | ||||||
|  | import * as upload from './upload'; | ||||||
|  | 
 | ||||||
| const config = JSON.parse(fs.readFileSync('./config/config.json', {encoding: 'utf8'})); | const config = JSON.parse(fs.readFileSync('./config/config.json', {encoding: 'utf8'})); | ||||||
| 
 | 
 | ||||||
| const db = mongoose.connect(`${config.dbconnectionURL}/${config.dbname}`, { | const db = mongoose.connect(`${config.dbconnectionURL}/${config.dbname}`, { | ||||||
|  | @ -37,15 +40,6 @@ const logger = winston.createLogger({ | ||||||
| 	] | 	] | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| function returnStatic(page) { |  | ||||||
| 	return (req, res) => { |  | ||||||
| 		fs.readFile(`src/html/${page}`, 'utf8', (err, data) => { |  | ||||||
| 			if (err) throw err; |  | ||||||
| 			res.send(data); |  | ||||||
| 		}); |  | ||||||
| 	}; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| logger.info('connecting to mongodb database'); | logger.info('connecting to mongodb database'); | ||||||
| db.then(() => { | db.then(() => { | ||||||
| 	logger.info('connected to database!'); | 	logger.info('connected to database!'); | ||||||
|  | @ -54,19 +48,13 @@ db.then(() => { | ||||||
| 
 | 
 | ||||||
| 	// @ts-ignore
 | 	// @ts-ignore
 | ||||||
| 	app.use(express.urlencoded({extended: true})); | 	app.use(express.urlencoded({extended: true})); | ||||||
|  | 	app.use(fileUpload({limits: { fileSize: 50 * 1024 * 1024 }})); | ||||||
| 
 | 
 | ||||||
| 	app.set('db', db); | 	app.set('db', db); | ||||||
| 	app.set('config', config); | 	app.set('config', config); | ||||||
| 	app.set('logger', logger); | 	app.set('logger', logger); | ||||||
| 
 | 
 | ||||||
| 	app.get('/upload', returnStatic('upload.html')); | 	upload.run(app); | ||||||
| 	 |  | ||||||
| 	app.post('/upload', async (req, res) => { // only for testing, very abusable
 |  | ||||||
| 		const file = new File(req.body); |  | ||||||
| 		await file.save(); |  | ||||||
| 
 |  | ||||||
| 		res.send('uploaded file'); |  | ||||||
| 	}); |  | ||||||
| 
 | 
 | ||||||
| 	app.get('/list', async (req, res) => { // only for testing
 | 	app.get('/list', async (req, res) => { // only for testing
 | ||||||
| 		const docs = await File.find({}); | 		const docs = await File.find({}); | ||||||
|  |  | ||||||
							
								
								
									
										10
									
								
								src/lib/util.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								src/lib/util.ts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,10 @@ | ||||||
|  | import * as fs from 'fs'; | ||||||
|  | 
 | ||||||
|  | export function returnStatic(page) { | ||||||
|  | 	return (req, res) => { | ||||||
|  | 		fs.readFile(`src/html/${page}`, 'utf8', (err, data) => { | ||||||
|  | 			if (err) throw err; | ||||||
|  | 			res.send(data); | ||||||
|  | 		}); | ||||||
|  | 	}; | ||||||
|  | } | ||||||
							
								
								
									
										11
									
								
								src/upload.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								src/upload.ts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,11 @@ | ||||||
|  | import { returnStatic } from './lib/util'; | ||||||
|  | 
 | ||||||
|  | export function run(app) { | ||||||
|  | 	app.get('/upload', returnStatic('upload.html')); | ||||||
|  | 	 | ||||||
|  | 	app.post('/upload', async (req, res) => { // only for testing, very abusable
 | ||||||
|  | 		console.log(req.files); | ||||||
|  | 		 | ||||||
|  | 		res.send('ok, i got something'); | ||||||
|  | 	}); | ||||||
|  | } | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue