diff --git a/pages/api/content.ts b/pages/api/content.ts new file mode 100644 index 0000000..e69de29 diff --git a/pages/api/data/content.ts b/pages/api/content/[subfolder].ts similarity index 68% rename from pages/api/data/content.ts rename to pages/api/content/[subfolder].ts index 92440b0..2984aa9 100644 --- a/pages/api/data/content.ts +++ b/pages/api/content/[subfolder].ts @@ -1,41 +1,63 @@ import path from 'path'; import { promises as fs } from 'fs'; import express from 'express'; -import { createUploadMiddleware, processFiles, listFiles, deleteFile } from './fileHandlers'; +import type { NextApiRequest, NextApiResponse } from 'next'; +import nc from 'next-connect'; -const router = express.Router(); - -// Dynamic routing to handle different content types based on the subfolder -router.use('/:subfolder', (req, res, next) => { - const { subfolder } = req.params; - req.subfolder = subfolder; // Pass the subfolder as part of the request for later use - next(); +const handler = nc({ + onError: (err, req, res, next) => { + console.error(err.stack); + res.status(500).end('Something broke!'); + }, + onNoMatch: (req, res) => { + res.status(404).end('Page is not found'); + } }); -// POST: Upload files to a specific subfolder -router.post('/:subfolder', createUploadMiddleware(req.subfolder).array('image'), (req, res) => { - processFiles(req, res, req.subfolder); +handler.use((req: NextApiRequest, res: NextApiResponse, next) => { + const subfolder = req.query.subfolder as string; + const upload = createUploadMiddleware(subfolder).array('image'); + upload(req, res, (err) => { + if (err) { + return res.status(500).json({ error: 'Failed to upload files.', details: err.message }); + } + next(); + }); }); -// GET: List files from a specific subfolder -router.get('/:subfolder', (req, res) => { - listFiles(req, res, req.subfolder); +handler.post((req: NextApiRequest, res: NextApiResponse) => { + // Process uploaded files + // Example response + res.json({ message: 'Files uploaded successfully', files: req.files }); }); -// DELETE: Delete a specific file from a subfolder -router.delete('/:subfolder', (req, res) => { - deleteFile(req, res, req.subfolder); +handler.get((req: NextApiRequest, res: NextApiResponse) => { + // Handle listing files + //listFiles(req, res, req.subfolder); + listFiles(req, res, req.query.subfolder as string); }); -export default router; +handler.delete((req: NextApiRequest, res: NextApiResponse) => { + // Handle deleting files + deleteFile(req, res, req.query.subfolder as string); +}); +export const config = { + api: { + bodyParser: false, + }, +}; + +export default handler; + +// ------------------------------------------------------------ //handling file uploads import multer from 'multer'; import sharp from 'sharp'; // Generalized Multer configuration -export function createUploadMiddleware(folder) { +export const createUploadMiddleware = (folder: string) => { const storage = multer.diskStorage({ destination: (req, file, cb) => { const uploadPath = path.join(process.cwd(), 'public/content', folder); @@ -49,8 +71,8 @@ export function createUploadMiddleware(folder) { cb(null, `${prefix}${path.extname(file.originalname)}`); } }); - return multer({ storage: storage }); -} + return multer({ storage }); +}; async function processFiles(req, res, folder) { if (!req.files || req.files.length === 0) { diff --git a/pages/permits.tsx b/pages/permits.tsx index c1ca1c8..2029885 100644 --- a/pages/permits.tsx +++ b/pages/permits.tsx @@ -4,13 +4,16 @@ import fs from 'fs'; import path from 'path'; import { url } from 'inspector'; import ProtectedRoute, { serverSideAuth } from "/components/protectedRoute"; +import axiosInstance from '../src/axiosSecure'; + const PDFViewerPage = ({ pdfFiles }) => { const [files, setFiles] = useState(pdfFiles); const handleFileDelete = async (fileName) => { + const subfolder = 'permits'; // Change this as needed based on your subfolder structure try { - await axios.delete(`/api/delete-file?name=${fileName}`); + await axiosInstance.delete(`/api/content/${subfolder}?file=${fileName}`); setFiles(files.filter(file => file.name !== fileName)); } catch (error) { console.error('Error deleting file:', error); @@ -22,8 +25,9 @@ const PDFViewerPage = ({ pdfFiles }) => { const formData = new FormData(); formData.append('file', file); + const subfolder = 'permits'; // Change this as needed based on your subfolder structure try { - const response = await axios.post('/api/upload-file', formData, { + const response = await axiosInstance.post(`/api/content/${subfolder}`, formData, { headers: { 'Content-Type': 'multipart/form-data' } @@ -34,11 +38,11 @@ const PDFViewerPage = ({ pdfFiles }) => { } }; + return (

Разрешителни

- {files.map((file, index) => (
diff --git a/public/content/permits/4 - Разрешително за Април - 24г..pdf b/public/content/permits/Разрешително за Април - 24г..pdf similarity index 100% rename from public/content/permits/4 - Разрешително за Април - 24г..pdf rename to public/content/permits/Разрешително за Април - 24г..pdf diff --git a/public/content/permits/Разрешително за Март 24г.-промяна (1).pdf b/public/content/permits/Разрешително за Март 24г.-промяна (1).pdf deleted file mode 100644 index 9fdf45c..0000000 Binary files a/public/content/permits/Разрешително за Март 24г.-промяна (1).pdf and /dev/null differ diff --git a/public/content/permits/Разрешително за Март 24г..pdf b/public/content/permits/Разрешително за Март 24г..pdf deleted file mode 100644 index 281f391..0000000 Binary files a/public/content/permits/Разрешително за Март 24г..pdf and /dev/null differ