Tengo una API js (AWS API Gateway + Lambda) que recibe datos de formulario que contienen un archivo (png/jpeg/obj). Toma el archivo y lo sube a IPFS usando Pinata. El problema es que cuando presiono Pinata api /pinFileToIPFS, el hash resultante no se puede ver en el navegador ( ejemplo ), simplemente se descarga instantáneamente. Cuando llego al mismo punto final usando cartero, se puede ver en el navegador ( ejemplo ). Quiero que Opensea recoja los metadatos de NFT y no parece funcionar a menos que la imagen sea visible. Estoy usando lambda-multipart-parser para analizar los datos del formulario del cuerpo del evento lambda y obtengo un resultado como este:
{ files: [ { content: <Buffer 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 00 00 01 87 00 00 01 aa 08 06 00 00 00 e0 2c 88 96 00 00 00 19 74 45 58 74 53 6f 66 74 77 61 72 65 00 ... 6342 more bytes>, filename: 'my-img.png', contentType: 'image/png', encoding: '7bit', fieldname: 'file' } ], }Luego hago la siguiente conversión para preparar los datos para la solicitud de Piñata:
import FormData from "form-data"; import parser from "lambda-multipart-parser"; import { Readable } from "stream"; const stream = Readable.from(request.files[0]["content"]); stream.path = request.files[0]["filename"]; let pinataData = new FormData(); pinataData.append("file", stream);Supongo que tiene que ver con la forma en que estoy formateando los datos legibles de la imagen, pero me he quedado sin cosas para probar. ¡Cualquier ayuda sería apreciada!