Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

193
Visualizações
"Unrecognized content encoding type" error when uploading an image

I am trying to fetch images that I have uploaded to my CDN. I used canvas.toDataURL to convert my images to PNGs before upload.

I get the following error when I try to fetch the images: Error: cURL error 61: Unrecognized content encoding type. libcurl understands deflate, gzip, br content encodings

So first I created this image using FabricJS: Then I am exporting it as a PNG using:

const dataURL = canvas.toDataURL({
    width: canvas.width,
    height: canvas.height,
    left: 0,
    top: 0,
    format: 'png'
})

Then I am uploading it to my S3 CDN using:

async function uploadPNG(dataURL, filePath) {
  const buf = Buffer.from(dataURL.replace(/^data:image\/\w+;base64,/, ""),'base64')

  const uploadParams = {
    Bucket: bucketName,
    ContentType: 'image/png',
    ContentEncoding: 'base64',
    Body: buf,
    Key: filePath
  }

  return await s3.upload(uploadParams).promise()
}

Then I am trying to upload that image (which is now in the S3 CDN) to a WooCommerce site using their API. https://s3.eu-central-1.amazonaws.com/cdn.blankt.com/product/s/AY6AJSHMXnf2ReCZOu.png

Here is part of that API request:

{
  "name": "AY6AJSHMXnf2ReCZOu",
  "type": "variable",
  "regular_price": "9.90",
  "sku": "AY6AJSHMXnf2ReCZOu",

  ...

  ],
  "images": [
    {
      "src": "https://s3.eu-central-1.amazonaws.com/cdn.blankt.com/product/s/AY6AJSHMXnf2ReCZOu.png"
    }
  ],
  "attributes" : [
    {
      "name"      : "Size",
      "variation" : true,
      "visible"   : true,
      "options"   : [ "A3", "A4", "A5" ]
    }
  ]
}

And this is the response that I get: enter image description here

This problem seem to only appear when I try to upload the image using the API, if I download and upload the image manually to WooCommerce, there are no problems.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

It would seem that you're providing the invalid content encoding in your s3 upload, where you provide the parameter ContentEncoding: 'base64'.

The s3 SDK documentation for the upload method is somewhat unclear in the specifics of handling the ContentEncoding parameter:

ContentEncoding — (String) Specifies what content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field.

But my suspicion is that it is simply passed along as the Content-Encoding HTTP header (MDN) when the object is accessed. In which case the image loads fine in your browser because it's smart (or perhaps dumb) enough to discard the encoding that it doesn't recognize, however WooCommerce's backend does not do that, and instead produces an error.

Solution: remove the ContentEncoding from your s3 upload params -- you're not uploading encoded content in the first place, since you decode the base64 data to raw bytes when you pass it to Buffer.from with the 'base64' encoding parameter (See Buffer.from(string[, encoding]) and character encodings in Node.JS docs)

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda