2017-09-01 75 views
0

我不得不多文件上传到AWS斗,我在做什么是上传PDF或图片文件到AWS桶在java

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导致此问题。但我无法解析this.Please帮助,我要上传的文件带来的多AWS的桶是否该文件是PDF格式或图像。

+0

检查你的代码here..'的BufferedImage ImageFromConvert = ImageIO.read(的inputStream);',你用BufferImage所以它不能是文件工作。 –

+0

我可以使用别的什么在这里上传图片或PDF文件或蚂蚁.txt文件? –

回答

0

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

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