Foto nicht korrekt hochgeladen GCS App Engine

Ich arbeite an meinem upload.java-Servlet, um .jpg in GCS zu speichern.

Ich verwende die GCS-Clientbibliothek anstelle der Google Cloud Storage-API. Ich finde jedoch kein Beispiel zum Hochladen eines Fotos (doPost-Methode), sodass mein Code nicht funktioniert ...

Das Senden ist erfolgreich (ich kann mein Foto auf GCS mit einer guten Größe von 465,24 KB sehen), aber wenn ich versuche, dieses Foto anzuzeigen, kann ich nicht:

Hier ist mein Code:

upload.java Servlet public void doPost (HttpServletRequest-Anforderung, HttpServletResponse-Antwort) löst IOException aus {

            //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);
            }
        }

android code (um foto zu senden)

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();

Danke im Voraus !

Antworten auf die Frage(1)

Ihre Antwort auf die Frage