Estoy usando next js y tengo esta función en una página para llamar a una API para cargar una imagen. No estoy seguro de dónde agregar una respuesta. Esto funciona y carga la imagen en mi aws cdn.
async function handleProductImageUpload(e) { const file = e.target.files[0]; const formData = new FormData(); formData.append("file", file); try { const upload = await fetch(`/api/image/Upload`, { method: "POST", body: formData, "Content-Type": "image/jpg", }); const response = await upload.json(); response && console.log(response.data.Location); setProductImages([...productImages, response.data.Location]); } catch (error) { upload.status(error.status).json(error.response.data); } }código para /api/imagen/Subir
import AWS from "aws-sdk"; export default async function handler(req, res) { // get the image data let image = req.body; // create S3 instance with credentials const s3 = new AWS.S3({ endpoint: new AWS.Endpoint("https://nyc3.digitaloceanspaces.com/"), accessKeyId: process.env.ACCESS_KEY_ID, secretAccessKey: process.env.ACCESS_SECRET_KEY, region: "us-west-2", }); // create parameters for upload const uploadParams = { Bucket: process.env.DOS3_BUCKET, Key: req.query.file, Body: image, ContentType: "image/jpeg", ACL: "public-read", }; //console.log(uploadParams); // execute upload let result = s3.upload(uploadParams, (err, data) => { if (err) return console.log("reject", err); else return console.log("resolve", data); }); res.status(200).send({ result }); }