在我们将文件上传到 S3 后再次重新从界面中下载的时候发现上传文件的简体中文为乱码。
这是因为在上传的文件的时候文件的 meta 数据设置为 text。
如果是这样的话,上传的文件中的简体中文会显示为乱码。
在源代码上传中,如果使用的是 String 进行上传的话,将会默认使用 text。
尽管所有的文本中都使用了 UTF-8,但是因为这个 UTF-8 是没有 BOM 格式的,因此没有办法识别为 UTF-8 版本。
因此我们在这里需要设置 metadata 元数据。
byte[] bytes = newsletterJSON.getBytes(StandardCharsets.UTF_8);ByteArrayInputStreamcontentsAsStream = new ByteArrayInputStream(bytes);ObjectMetadatamd = new ObjectMetadata();md.setContentType(MediaType.JSON_UTF_8.toString());PutObjectResultputObjectResult = s3Client.putObject("com.ossez.real.estate","kb/newsletter.json", contentsAsStream, md);
考虑上面的代码。
在上面的代码中,我们设置了 ObjectMetadata 对象中的内容类型。
另外,如果你将 String 保存为文件,然后使用 S3 的客户端从文件中读取后上传的话是没有这个问题的。
这个问题的存在就是将 String 保存在内存中的数据直接上传到 S3 上。
网友评论