我有一个Java代码,可将图像上传到S3:
MappingJackson2HttpMessageConverter jsonHttpMessageConverter = new MappingJackson2HttpMessageConverter();
jsonHttpMessageConverter.getObjectMapper().configure(SerializationFeature.FAIL_ON_EMPTY_BEANS,false);
jsonHttpMessageConverter.setSupportedMediaTypes(Arrays.asList(MediaType.IMAGE_JPEG,MediaType.IMAGE_JPEG));
restTemplate.getMessageConverters().add(jsonHttpMessageConverter);
try {
//File f = multipartToFile(filedata);
//uri = new URI(url.toString());
File f = new File("<SOMEDIRECTORY>/<SOMEIMAGE>.jpeg");
headers.setContentType(MediaType.IMAGE_JPEG);
HttpEntity<File> entity = new HttpEntity<>(f,headers);
System.out.println("FILE " + f.getabsolutePath());
System.out.println("FILE " + f.getTotalSpace());
System.out.println("FILE " + f.getPath());
System.out.println("FILE " + f.getName());
ResponseEntity<String> response = restTemplate.exchange(new URI(url.toString()),HttpMethod.PUT,entity,String.class);
result = response.getBody();
} catch (URISyntaxException e) {
e.printStackTrace();
}
我将文件设置为本地PC中的某些图像。代码可以正常工作并在S3中上载图像,但是图像只是白色正方形,当我下载图像时会显示:
Error interpreting JPEG image file (Not a JPEG file: starts with 0x22 0x2f)
我看到了这篇文章,但不太了解解决方法s3.upload() works but uploads broken image
这也是我的http请求日志:
2019-11-12 10:47:59.493 INFO 12885 --- [nio-8080-exec-8] a.s.RequestResponseLoggingInterceptor : ===========================request begin================================================
2019-11-12 10:47:59.493 INFO 12885 --- [nio-8080-exec-8] a.s.RequestResponseLoggingInterceptor : URI : https://<SOMEURL>/<SOMEIMAGEFILE>?AWSaccessKeyId=<accESKEY>&Content-Type=image%2Fjpeg&Expires=1573527779&Signature=<SIGNATURE>&x-amz-security-token=IQoJb3JpZ2luX2VjEOP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaDmFwLXNvdXRoZWFzdC0xIkcwRQIhAMUE%2FnlJvn%2BpUsBHozJ9gH2uyzYxwb4fIj4e0y7Hm%2FY3AiBWEYwKECXCszLmBa%2FxL3IJBAdzKNJMy7RduKLw%2BIMt1yrqAQj8%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F8BEAEaDDY2NDkzNTQ0NTIzOCIMbn7Ysc1VRzdQzo4VKr4BHd8rZuMMaKGedMFPIVvgmdlKEXRAW%2F5X%2FNa0915dIul95kOZMlV37xXeaKk<CUT>
2019-11-12 10:47:59.493 INFO 12885 --- [nio-8080-exec-8] a.s.RequestResponseLoggingInterceptor : Method : PUT
2019-11-12 10:47:59.493 INFO 12885 --- [nio-8080-exec-8] a.s.RequestResponseLoggingInterceptor : Headers : [accept:"text/plain,application/json,application/cbor,application/*+json,image/jpeg,*/*",Content-Type:"image/jpeg",Content-Length:"29"]
2019-11-12 10:47:59.494 INFO 12885 --- [nio-8080-exec-8] a.s.RequestResponseLoggingInterceptor : ==========================request end================================================
我错过了什么吗?