【问题标题】:upload pdf or image file to aws bucket java将 pdf 或图像文件上传到 aws bucket java
【发布时间】:2017-09-01 05:54:56
【问题描述】:

我必须将多部分文件上传到 aws 存储桶,我正在做的是

public String uploadOnBucket(MultipartFile file){

            InputStream inputStream = file.getInputStream();


            BufferedImage ImageFromConvert = ImageIO.read(inputStream);
            ByteArrayOutputStream os = new ByteArrayOutputStream();
            ImageIO.write(ImageFromConvert, extension, os);
            byte[] buffer = os.toByteArray();
            InputStream is = new ByteArrayInputStream(buffer);

            ObjectMetadata meta = new ObjectMetadata();
            meta.setContentLength(buffer.length);
            AmazonS3 s3Client = AwsUtil.s3Authentication();
            s3Client.putObject(new PutObjectRequest(uploadedFileLocation, fileName, is, meta).withCannedAcl(CannedAccessControlList.Private));
            inputStream.close();

}

上面的代码适用于任何图像,但是当我尝试上传 pdf 时,它给了我“图像为空”的异常。我可以理解 IMageIO 导致了这个问题。但我无法解决这个问题。请帮忙,我想将文件分成多部分上传到 aws 存储桶,无论文件是 pdf 还是图像。

【问题讨论】:

  • 在此处检查您的代码..` BufferedImage ImageFromConvert = ImageIO.read(inputStream);` ,您使用 BufferImage 所以它不适用于文件。
  • 我还能在这里使用什么来上传图片或pdf文件或ant .txt文件?

标签: java amazon-web-services amazon-s3


【解决方案1】:

我已经通过直接将输入流传递给存储桶解决了我的问题。

InputStream is = file.getInputStream();
            ObjectMetadata meta = new ObjectMetadata();
            meta.setContentLength(is.available());
            AmazonS3 s3Client = AwsUtil.s3Authentication();
            s3Client.putObject(new PutObjectRequest(uploadedFileLocation, updatedFileName, is, meta)
                    .withCannedAcl(CannedAccessControlList.Private));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-09
    • 1970-01-01
    • 2014-10-24
    • 1970-01-01
    • 1970-01-01
    • 2015-05-13
    • 2020-02-17
    • 1970-01-01
    相关资源
    最近更新 更多