A foto não foi carregada corretamente GCS App Engine
Estou trabalhando no meu servlet upload.java para armazenar .jpg no GCS.
Eu uso a biblioteca do cliente GCS em vez da API do Google Cloud Storage. Mas não encontrei nenhum exemplo para fazer upload de foto (método doPost) para que meu código não funcione ...
O envio é um sucesso (posso ver minha foto no GCS com um bom tamanho 465,24 KB), mas quando tento visualizar esta, não consigo:
Aqui está o meu código:
servlet upload.java public void doPost (solicitação HttpServletRequest, resposta HttpServletResponse) lança IOException {
//Read the file contents from the input stream
GcsService gcsService = GcsServiceFactory.createGcsService();
GcsFilename filename = new GcsFilename(BUCKETNAME, FILENAME);
GcsFileOptions options = new GcsFileOptions.Builder()
.mimeType("image/jpeg")
.acl("public-read")
.addUserMetadata("myfield1", "my field value")
.build();
GcsOutputChannel writeChannel = gcsService.createOrReplace(filename, options);
InputStream is = request.getInputStream();
try {
copy(is, Channels.newOutputStream(writeChannel));
} finally {
writeChannel.close();
is.close();
}
}
private void copy(InputStream input, OutputStream output) throws IOException {
byte[] buffer = new byte[256];
int bytesRead = input.read(buffer);
while (bytesRead != -1) {
output.write(buffer, 0, bytesRead);
bytesRead = input.read(buffer);
}
}
código android (para enviar foto)
HttpPost httppost = new HttpPost("adress.appengine.com/upload");
//On créé un fichier File qui contient la photo que l'on vient de prendre (Accessible via son Path)
File f = new File(AccueilActivity.fileUri.getPath());
//On créé un FileBody (Contenu de notre requête http POST) contenant notre photo
FileBody fileBody = new FileBody(f);
//Permet de créer une requête avec plusieurs partie
MultipartEntity reqEntity = new MultipartEntity();
//On ajoute notre photo avec le mot clé file.
reqEntity.addPart("file", fileBody);
//On set notre requête HTTP
httppost.setEntity(reqEntity);
//On execute notre requete HTTP Post, et on appele du coup automatiquement le servlet "uploaded",
//et on met la réponse dans response.
HttpResponse response = httpClient.execute(httppost);
//Ici on récupère l'entête de notre réponse HTTP (Tout sauf le code réponse)
HttpEntity urlEntity = response.getEntity();
Desde já, obrigado !