CoolFace
Apppublic

fighter-programmer/uploader

sourceHugging Facemitupdated 3y agoView on Hugging Face
0likes
main.coffee54 linesDownload Raw Back to root
1fs = require 'fs'2os = require 'os'3bytes = require 'bytes'4cors = require 'cors'5express = require 'express'6{ fromBuffer } = require 'file-type'7multer = require 'multer'8 9limitSize = '5000mb'10tmpFolder = os.tmpdir()11 12app = express()13app.set 'json spaces', 414 15app.use cors()16# limit upload file17app.use express.json limit: limitSize18app.use express.urlencoded extended: true, limit: limitSize19 20# multer configuration21upload = multer({ dest: tmpFolder })22 23# logger24app.use (req, res, next) ->25	time = new Date().toLocaleString 'id', timeZone: 'Asia/Jakarta'26	console.log "[#{time}] #{req.method}: #{req.url}"27	next()28 29# allow user to access file in tmpFolder30app.use '/file', express.static tmpFolder31 32app.all '/', (_, res) -> res.send 'POST /upload'33 34app.post '/upload', upload.single('file'), (req, res) ->35	if not req.file36		res.json message: 'No file uploaded'37 38	fileBuffer = fs.readFileSync req.file.path39	ftype = await fromBuffer fileBuffer40	if not ftype then ftype = mime: 'file', ext: 'bin'41	42	randomName = Math.random().toString(36).slice(2)43	fileName = "#{ftype.mime.split('/')[0]}-#{randomName}.#{ftype.ext}"44	await fs.promises.rename req.file.path, "#{tmpFolder}/#{fileName}"45	res.json46		name: fileName,47		size:48			bytes: fileBuffer.length,49			readable: bytes fileBuffer.length, unitSeparator: ' '50		,51		type: ftype,52		url: "https://#{process.env.SPACE_HOST}/file/#{fileName}"53 54app.listen 7860, () -> console.log 'App running on port', 7860