File Upload PrimeFaces - Salvar imagem no contexto do projeto

Putz, então nem posso ajudar, achei que a solução era mais genérica.
E o que acha de colocar a imagem em um site proprio para imagens? Não é viável para o projeto? Se for posso até postar uma exemplo de como enviar pra o AmazonS3 com o primefaces.

[quote=ErickRAR]Putz, então nem posso ajudar, achei que a solução era mais genérica.
E o que acha de colocar a imagem em um site proprio para imagens? Não é viável para o projeto? Se for posso até postar uma exemplo de como enviar pra o AmazonS3 com o primefaces.[/quote]

Você diz um ftp?

Posso tentar sim…vou ver aqui como que faço pra criar um ftp e tals… se puder postar o código, fico grato =)

e vlw pela ajuda…=P

Isso. No Amazon é de graça, só paga se passar do limite de requisições, o que , dependendo do sistema ,é bem dificil ultrapassar.

O método:

public void enviaImagem(FileUploadEvent event) {
	String linkDaImagem = "";
		try {
                  linkDaImagem = AmazonS3FileUpload.upload(event);
                  System.out.println(linkDaImagem);
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
	}  

E a classe:

package util;

import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLEncoder;


import org.primefaces.event.FileUploadEvent;

import com.amazonaws.auth.PropertiesCredentials;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.CannedAccessControlList;
import com.amazonaws.services.s3.model.ObjectMetadata;
import com.amazonaws.services.s3.model.PutObjectRequest;
import com.amazonaws.services.s3.model.Region;

public class AmazonS3FileUpload {

	private static AmazonS3 s3;
	private final static String S3WAWSURL = "https://s3-sa-east-1.amazonaws.com/%s/%s";
	private final static String S3_BUCKETNAME="nome_do_bucket"; 

	static{
		InputStream credentials = AmazonS3FileUpload.class.getClassLoader().getResourceAsStream("AwsCredentials.properties");
		PropertiesCredentials awsCredentials = null;
		if(credentials == null)
			try {
				awsCredentials = new PropertiesCredentials(credentials);
			} catch (IOException e) {
				e.printStackTrace();
			}
		s3 = new AmazonS3Client(awsCredentials);
	}


	public static String uploadFoto(FileUploadEvent event) throws IOException{
		String fileName = URLEncoder.encode(event.getFile().getFileName(),"UTF-8");
		PutObjectRequest request = new PutObjectRequest(S3_BUCKETNAME, fileName, event.getFile().getInputstream(), getMetaData(event));
		s3.putObject(request.withCannedAcl(CannedAccessControlList.PublicRead));
		return new URL(String.format(S3WAWSURL,S3_BUCKETNAME,fileName)).toExternalForm(); 
	}
	
	private static ObjectMetadata getMetaData(FileUploadEvent event){
		ObjectMetadata metaData = new ObjectMetadata();
		metaData.setContentLength(event.getFile().getSize());
		metaData.setContentType(event.getFile().getContentType());
		return metaData;
	}
}

O AwsCredentials.properties você coloca em resources, com a secretKey e accessKey.

Pra separar por pasta, basta colocar o nome da pasta antes do URLEncoder:

String fileName = "nomeDaPasta/" + URLEncoder.encode(event.getFile().getFileName(),"UTF-8");

Aqui tem o jar: http://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk/1.8.3