У меня проблема с загрузкой изображения с телефона в приложение heroku. Я использую aws s3 для хранения изображений, а мое приложение размещено на heroku. При попытке загрузить изображение с телефона выдается ошибка, но при загрузке с компьютера все работает нормально. Это мое живое приложение https://lit-temple-56720.herokuapp.com/
@Controller
public class SaveController {
@Autowired
private ArticleService articleService;
@Autowired
private UserService userService;
public static String uploadDirectory = System.getProperty("user.dir") + "/src/main/resources/public/uploads";
@PostMapping("/api/article")
public String saveOrUpdate(@RequestParam("message") String message, Principal principal, @RequestParam("files") MultipartFile[] files) {
StringBuilder fileNames = new StringBuilder();
Article article = new Article();
String usernameAndImg = "";
usernameAndImg = (principal.getName() + "%");
User user = userService.getUser(principal.getName());
article.setUser(user);
article.setMessage(message);
for (MultipartFile file : files) {
Path fileNameAndPath = Paths.get(uploadDirectory, file.getOriginalFilename());
fileNames.append(file.getOriginalFilename() + " ");
usernameAndImg += file.getOriginalFilename();
article.setUserName(usernameAndImg);
try {
Files.write(fileNameAndPath, file.getBytes());
//=== s3 part =====
// SECTION 1 OPTION 1: Create a S3 client with in-program credential
//
BasicAWSCredentials awsCreds = new BasicAWSCredentials("key", "key");
// us-east-2 is AWS Oregon
AmazonS3 s3Client = AmazonS3ClientBuilder.standard().withRegion("us-east-2").withCredentials(new AWSStaticCredentialsProvider(awsCreds))
.build();
// SECTION 2: Put file in S3 bucket
//
String bucketName = "articles-photos";
String folderName = "photos";
String fileNameInS3 = file.getOriginalFilename();
PutObjectRequest request = new PutObjectRequest(bucketName, folderName + "/" + fileNameInS3, new File(String.valueOf(fileNameAndPath)));
request.setCannedAcl(CannedAccessControlList.PublicRead);
s3Client.putObject(request);
// SECTION 3: Get file from S3 bucket
//
S3Object fullObject;
fullObject = s3Client.getObject(new GetObjectRequest(bucketName, folderName + "/" + fileNameInS3));
} catch (IOException e) {
e.printStackTrace();
}
}
articleService.saveArticle(article);
return "redirect:/index.html";
}
}