AWS Lambda y S3 - archivo pdf subido es blanco / corrupta

Kunlun:

Tengo una aplicación de primavera (que se ejecuta en AWS Lambda), que consigue un archivo y lo carga en AWS S3.

El controlador envía una primavera MultipartFilea mi método, donde ha subido a AWS S3, Amazon usando API Gateway.

public static void uploadFile(MultipartFile mpFile, String fileName) throws IOException{

    String dirPath = System.getProperty("java.io.tmpdir", "/tmp");
    File file = new File(dirPath  + "/" + fileName);

    OutputStream ops = new FileOutputStream(file);
    ops.write(mpFile.getBytes());

    s3client.putObject("fakebucketname", fileName, file);

}

Intento cargar un archivo PDF que tiene 2 páginas con texto. Después de cargar, el archivo PDF (en AWS S3) tiene 2 páginas en blanco.

¿Por qué es el espacio en blanco de archivos PDF cargado?

También probé con otros archivos (como imagen PNG) y cuando lo abro la imagen que he subido está corrupto.

El único que funcionó fue cuando he subido un archivo de texto.

llama:

Resulta que esto va a hacer este truco. Todo es cuestión de codificación, gracias a la ayuda de @KunLun. En mi caso, es el archivo de varias partes (pdf) que se pasa a través de AWS un POST a la URL.

        Base64.Encoder enc = Base64.getEncoder();
        byte[] encbytes = enc.encode(file.getBytes());
        for (int i = 0; i < encbytes.length; i++)
        {
            System.out.printf("%c", (char) encbytes[i]);
            if (i != 0 && i % 4 == 0)
                System.out.print(' ');
        }
        Base64.Decoder dec = Base64.getDecoder();
        byte[] barray2 = dec.decode(encbytes);
        InputStream fis = new ByteArrayInputStream(barray2);

        PutObjectResult objectResult = s3client.putObject("xxx", file.getOriginalFilename(), fis, data);

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=478695&siteId=1
Recomendado
Clasificación