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

432
Visualizações
Subir imagen base64 a amazon s3

Tengo algunos problemas al intentar cargar una imagen en AWS S3. Parece cargar el archivo correctamente pero, cada vez que intento descargarlo o obtener una vista previa, no se puede abrir. Actualmente, este es el código de carga que estoy usando:

 <?php require_once 'classes/amazon.php'; require_once 'includes/aws/aws-autoloader.php'; use Aws\S3\S3Client; $putdata = file_get_contents("php://input"); $request = json_decode($putdata); $image_parts = explode(";base64,", $request->image); $image_type_aux = explode("image/", $image_parts[0]); $image_type = $image_type_aux[1]; $image_base64 = $image_parts[1]; $dateTime = new DateTime(); $fileName = $dateTime->getTimestamp() . "." . $image_type; $s3Client = S3Client::factory(array( 'region' => 'eu-west-1', 'version' => '2006-03-01', 'credentials' => array( 'key' => Amazon::getAccessKey(), 'secret' => Amazon::getSecretKey(), ) )); try { $result = $s3Client->putObject(array( 'Bucket' => Amazon::getBucket(), 'Key' => 'banners/' . $fileName, 'Body' => $image_base64, 'ContentType' => 'image/' . $image_type, 'ACL' => 'public-read' )); echo $result['ObjectURL'] . "\n"; } catch(S3Exception $e) { echo $e->getMessage() . "\n"; } ?>

Entonces, cuando reviso la consola después de cargar el archivo de imagen, tiene el tamaño, los permisos y los encabezados esperados pero, como dije, cada vez que intento abrir el archivo, falla.

Cual podría ser el problema aquí? Gracias por adelantado.

about 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

El problema aquí es que parece estar cargando la versión codificada en base64 de la imagen y no los bytes sin procesar de la imagen. Tome $image_base64 y decodifique en bytes sin procesar primero http://php.net/manual/en/function.base64-decode.php . Estoy seguro de que si intentara abrir esas "imágenes" en un editor de texto, vería datos hexadecimales base64.

about 4 years ago · Santiago Trujillo Relatório

0

puede cargar "sobre la marcha" usando la función $s3Client->upload como en el siguiente ejemplo:

 <?php $bucket = 'bucket-name'; $filename = 'image-path.extension'; $imageData = base64_decode(end(explode(",", $base64))); $upload = $s3Client->upload($bucket, $filename, $imageData, 'public-read'); $upload->get('ObjectURL');
about 4 years ago · Santiago Trujillo Relatório

0

Uso silex php 2.0 y la siguiente fuente de código

 $s3 = $app['aws']->createS3(); $putdata = file_get_contents("php://input"); $data = json_decode($request->getContent(), true); $data = (object) $data; $image_parts = explode(";base64,", $data->image); $image_type_aux = explode("image/", $image_parts[0]); $image_type = $image_type_aux[1]; $image_base64 = base64_decode($image_parts[1]); $result = $s3->putObject([ 'ACL' => 'public-read', 'Body' => $image_base64, 'Bucket' => 'name-bucket', 'Key' => 'test_img.jpeg', 'ContentType' => 'image/' . $image_type, ]); var_dump($result['ObjectURL']);
about 4 years ago · Santiago Trujillo 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