我目前利用以下内容将文件上传到S3:
File file = new File(my_file_path); AmazonS3 s3 = new AmazonS3Client(new PropertiesCredentials(cred)); s3.putObject(new PutObjectRequest("folder", key, file));
上面的方法工作正常,但我想直接将a保存BufferedImage到S3以从应用程序中删除几秒钟,但是我不知道如何执行此操作?这是我当前将图像保存到文件中的方式:
BufferedImage
image = new BufferedImage(rawImage.width, rawImage.height, BufferedImage.TYPE_INT_ARGB); File file = new File(filepath); ImageIO.write(image, "png", file);
有没有一种方法可以直接以流的形式直接写入Amazon S3,如果可以,有人可以显示示例吗?
另外,这是个好主意吗?如果它容易出错,我将继续使用当前方法。任何建议表示赞赏。
以下(或类似的东西)应该可以正常工作。避免写入物理文件的步骤比处理磁盘I / O的错误发生几率要小一些(至少,随着时间的推移,填满磁盘的机会会减少)。
BufferedImage image = ... ByteArrayOutputStream os = new ByteArrayOutputStream(); ImageIO.write(image, "png", os); byte[] buffer = os.toByteArray(); InputStream is = new ByteArrayInputStream(buffer); AmazonS3 s3 = new AmazonS3Client(new PropertiesCredentials(cred)); ObjectMetadata meta = new ObjectMetadata(); meta.setContentLength(buffer.length); s3.putObject(new PutObjectRequest("folder", key, is, meta));