refactor: move Bytescale upload logic to backend for security
This commit is contained in:
@@ -1,15 +1,35 @@
|
||||
import express from "express";
|
||||
import {upload} from "../controllers/upload.controller.js";
|
||||
import * as Bytescale from "@bytescale/sdk";
|
||||
import multer from "multer";
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
router.post("/image", upload.single("image"), (req, res) => {
|
||||
res.json({
|
||||
success: 1,
|
||||
file: {
|
||||
url: `http://localhost:3000/uploads/blog/${req.file.filename}`,
|
||||
},
|
||||
});
|
||||
const uploadManager = new Bytescale.UploadManager({
|
||||
apiKey: process.env.BYTESCALE_SECRET_API_KEY,
|
||||
});
|
||||
|
||||
const storage = multer.memoryStorage();
|
||||
const upload = multer({storage});
|
||||
|
||||
router.post("/", upload.single("file"), async (req, res) => {
|
||||
try {
|
||||
const file = req.file;
|
||||
const {folderPath} = req.body;
|
||||
|
||||
const result = await uploadManager.upload({
|
||||
data: file.buffer,
|
||||
name: file.originalname,
|
||||
mime: file.mimetype,
|
||||
path: {
|
||||
folderPath: folderPath || "/general",
|
||||
},
|
||||
});
|
||||
|
||||
res.json({fileUrl: result.fileUrl});
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
res.status(500).json({error: "Upload failed"});
|
||||
}
|
||||
});
|
||||
|
||||
export default router;
|
||||
|
||||
Reference in New Issue
Block a user