gpt4 book ai didi

java - AWS Lambda 和 S3 - 上传的 pdf 文件为空白

转载 作者:行者123 更新时间:2023-12-04 00:21:37 24 4
gpt4 key购买 nike

我有一个非常简单的函数,它使用 AWS Lambda 和 Amazon 将 PDF 文件上传到 AWS S3 (https://codedestine.com/aws-s3-putobject-java/)API 网关。

我尝试上传包含 2 页文本的 PDF 文件。上传后,PDF 文件(在 AWS S3 上)有 2 个空白页。

这是我在 AWS S3 上上传 PDF 文件的方法。

public static void uploadFile2(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);

}

为什么上传的PDF文件是空白的?

最佳答案

事实证明,这可以做到这一点。感谢@KunLun 的帮助,这一切都与编码有关。在我的场景中,文件是通过 POST 到 url 传递给 aws 的多部分文件 (pdf)。


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);


要包含的另一个非常重要的部分是必须正确配置 API 网关设置以支持二进制数据类型。 AWS 控制台 --> API 网关 --> 设置 --> 在所附照片中包含我下面的内容

关于java - AWS Lambda 和 S3 - 上传的 pdf 文件为空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60310267/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com