Download src/routes/api.js from Fourstore/Uploader: direct link, hf CLI and curl.
- Browser
- Download file 2.65 kB
-
https://huggingface.co/spaces/Fourstore/Uploader/resolve/main/src/routes/api.js
- Command line
-
hf download hf://spaces/Fourstore/Uploader/src/routes/api.js
-
curl -L -o api.js https://huggingface.co/spaces/Fourstore/Uploader/resolve/main/src/routes/api.js
2.65 kB
| const express = require('express'); | |
| const multer = require('multer'); | |
| const path = require('path'); | |
| const fs = require('fs'); | |
| const mime = require('mime-types'); | |
| const router = express.Router(); | |
| const uploadDir = path.join(__dirname, '../../uploads'); | |
| if (!fs.existsSync(uploadDir)) { | |
| fs.mkdirSync(uploadDir, { recursive: true }); | |
| } | |
| const supportedExtensions = [ | |
| '.jpg', '.jpeg', '.png', '.gif', '.webp', | |
| '.mp4', '.mov', '.avi', '.mkv', '.webm', | |
| '.mp3', '.wav', '.ogg', '.m4a' | |
| ]; | |
| const storage = multer.diskStorage({ | |
| destination: (req, file, cb) => { | |
| cb(null, uploadDir); | |
| }, | |
| filename: (req, file, cb) => { | |
| const ext = path.extname(file.originalname).toLowerCase(); | |
| const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1E9); | |
| cb(null, 'file-' + uniqueSuffix + ext); | |
| } | |
| }); | |
| const fileFilter = (req, file, cb) => { | |
| const ext = path.extname(file.originalname).toLowerCase(); | |
| if (supportedExtensions.includes(ext)) { | |
| cb(null, true); | |
| } else { | |
| cb(new Error(`Unsupported file type: ${ext}`), false); | |
| } | |
| }; | |
| const upload = multer({ | |
| storage: storage, | |
| fileFilter: fileFilter, | |
| limits: { | |
| fileSize: 100 * 1024 * 1024 // 100MB | |
| } | |
| }); | |
| router.post('/upload', upload.single('file'), (req, res) => { | |
| if (!req.file) { | |
| return res.status(400).json({ error: 'No file uploaded or invalid file type' }); | |
| } | |
| const fileType = mime.lookup(req.file.originalname) || 'application/octet-stream'; | |
| const fileCategory = getFileCategory(fileType); | |
| const protocol = req.secure || req.headers['x-forwarded-proto'] === 'https' ? 'https' : 'http'; | |
| const host = req.headers.host || `${DOMAIN}:${PORT}`; | |
| res.json({ | |
| message: 'File uploaded successfully', | |
| file: { | |
| originalName: req.file.originalname, | |
| fileName: req.file.filename, | |
| size: req.file.size, | |
| type: fileType, | |
| category: fileCategory, | |
| url: `${protocol}://${host}/api/files/${req.file.filename}` | |
| } | |
| }); | |
| }); | |
| router.get('/files/:filename', (req, res) => { | |
| const filePath = path.join(uploadDir, req.params.filename); | |
| if (!fs.existsSync(filePath)) { | |
| return res.status(404).json({ | |
| error: 'File not found', | |
| message: `The requested file does not exist on the server` | |
| }); | |
| } | |
| const contentType = mime.lookup(filePath) || 'application/octet-stream'; | |
| res.setHeader('Content-Type', contentType); | |
| res.sendFile(filePath); | |
| }); | |
| function getFileCategory(mimeType) { | |
| if (mimeType.startsWith('image/')) return 'image'; | |
| if (mimeType.startsWith('video/')) return 'video'; | |
| if (mimeType.startsWith('audio/')) return 'audio'; | |
| return 'other'; | |
| } | |
| module.exports = router; |