Ola boa tarde, sem querer eu solucionei a outra duvida que eu tinha aberto, então optei por abrir uma nova duvida.
Eu tentei usar o NinjaS3 mais não obtive sucesso, segue o codigo
Dependencias do S3 Ninja
<!-- s3ninja -->
<dependency>
<groupId>com.scireum</groupId>
<artifactId>s3ninja</artifactId>
<version>2.3.2</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>1.9.11</version>
</dependency>
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>http://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>sonatype-oss-public</id>
<url>http://oss.sonatype.org/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
Classe de Configuracao do S3AmazonClient
public class AmazonConfiguration {
@Bean
public AmazonS3Client s3Ninja() {
AWSCredentials credentials = new BasicAWSCredentials(
"AKIAIOSFODNN7EXAMPLE",
"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY");
AmazonS3Client newClient = new AmazonS3Client(credentials,
new ClientConfiguration());
newClient.setS3ClientOptions(new S3ClientOptions()
.withPathStyleAccess(true));
newClient.setEndpoint("http://localhost:9444/s3");
return newClient;
}
}
SerlvetMVCSpring Eu add AmazonConfiguration
public class ServletSpringMVC extends
AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] { SecurityConfiguration.class,
AppWebConfiguration.class, JPAConfiguration.class,
JPAProductionConfiguration.class,AmazonConfiguration.class };
}
// codigo omitido...
}
** Ai no FileSaver
@Component
public class FileSaver {
@Autowired
private AmazonS3Client s3;
public String write(String baseFolder, MultipartFile multipartFile) {
try {
s3.putObject("casadocodigo", multipartFile.getOriginalFilename(),
multipartFile.getInputStream(), new ObjectMetadata());
return "http://localhost:9444/s3/casadocodigo/"+multipartFile.getOriginalFilename()+"?noAuth=true";
} catch (AmazonClientException | IOException e) {
throw new RuntimeException(e);
}
}
}
** Método controller
@RequestMapping(method=RequestMethod.POST)
@CacheEvict(value="lastProducts", allEntries=true)
public ModelAndView save(MultipartFile summary,@ModelAttribute("product") @Valid Product product,BindingResult bindingResult,RedirectAttributes redirectAttributes) throws IOException{
if(bindingResult.hasErrors()){
return form(product);
}
//Sera que passo o product como parametro?
String webPath = fileSaver.write("uploaded-images",summary);
product.setSummaryPath(webPath);
products.save(product);
redirectAttributes.addFlashAttribute("success", "Produto cadastrado com sucesso");
return new ModelAndView("redirect:produtos");
}
Uma das minhas dúvidas é como eu consigo essas crendenciais? Eu tenho que acessar http://localhost:9444/s3?, eu tento mais não consigo. Esta faltando mais alguma configuração? E fica lançando Exception de Connection Refused, poque isso ocorre?