Spaces:
Runtime error
Runtime error
| import express from "express"; | |
| import multer from "multer"; | |
| import sharp from "sharp"; | |
| import fs from "fs"; | |
| import path from "path"; | |
| const app = express(); | |
| const upload = multer({ dest: "/tmp/uploads" }); | |
| app.post("/convert", upload.single("file"), async (req, res) => { | |
| try { | |
| if (!req.file) { | |
| return res.status(400).send("No file uploaded"); | |
| } | |
| const originalName = path.parse(req.file.originalname).name; | |
| const outputFileName = `${originalName}.jpg`; | |
| const outputPath = path.join("/tmp", outputFileName); | |
| // Convert to JPEG with max quality | |
| await sharp(req.file.path) | |
| .jpeg({ quality: 100, chromaSubsampling: "4:4:4" }) // Highest quality possible | |
| .toFile(outputPath); | |
| res.setHeader("Content-Type", "image/jpeg"); | |
| res.setHeader("Content-Disposition", `attachment; filename="${outputFileName}"`); | |
| const fileStream = fs.createReadStream(outputPath); | |
| fileStream.pipe(res); | |
| fileStream.on("close", () => { | |
| fs.unlinkSync(req.file.path); | |
| fs.unlinkSync(outputPath); | |
| }); | |
| } catch (error) { | |
| console.error(error); | |
| res.status(500).send("Conversion failed"); | |
| } | |
| }); | |
| const PORT = process.env.PORT || 7860; | |
| app.listen(PORT, () => console.log(`Server running on port ${PORT}`)); | |