Estoy tratando de subir imágenes con multer. Todo ha funcionado antes en localhost bien. Las imágenes se cargan y puedo verlas desde el enlace URL que proporciona el código. Sin embargo, una vez que lo cargué en un servidor, comencé a recibir este error: "Cannot GET /marketplace-api/rest-api/image/1650484814178.jpg".
No he proporcionado un enlace al servidor/dominios a la pregunta en caso de que la gente diga que ese es el problema.
Aquí está mi código:
const express = require('express'); const app = express(); const multer = require("multer"); const path = require("path"); const db = require('./db'); const cors = require('cors'); const port = 5000; const bodyParser = require('body-parser'); app.use(bodyParser.urlencoded({ extended: true , limit: '50mb'})); app.use(cors()); app.use("/image", express.static("image")); let imageName = ""; const storage = multer.diskStorage({ destination: path.join("./image"), filename: function (req, file, cb) { imageName = Date.now() + path.extname(file.originalname); cb(null, imageName); }, }); const upload = multer({ storage: storage, limits: { fileSize: 3000000 }, }).single("myImage"); app.post("/marketplace-api/rest-api/upload-image", (req, res) => { upload(req, res, (err) => { if (err) { console.log(err); } else { return res.status(201) .json({ url: "http://link to domains/marketplace-api/rest-api/image/" + imageName }); } }); }); app.listen(port, () => { console.log("server run in port", port); });ok, algunas cosas, 1. no tiene ninguna función de obtención, lo que significa que no puede publicar en esta ubicación, sugiero hacer esto:
app.get('/', (req, res) => { res.sendFile(__dirname + "/index.html"); });y cree un archivo llamado index.html, vaya a su sitio (localhost), y debería funcionar, luego agregue un formulario en el archivo html, debería verse así
<form action = "/marketplace-api/rest-api/upload-image" method = "POST"> <input type = "file" name="image"> <input type = "submit"> </form>esto agregará un formulario básico donde puede cargar su foto. hay algunas cosas más para agregar / cambiar, arreglaré todo y lo convertiré en un repositorio y luego lo enviaré aquí