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