我终于(自己)找到了解决我问题的方法!我为那= D感到骄傲
The pre for Android:
//Actions à réaliser en fond protected String doInBackground(String... params) { //Création d'une requête HTTP HttpClient httpClient = new DefaultHttpClient(); //On construit notre adresse Post grâce à ce que l'on vient de récupérer HttpPost httppost = new HttpPost("http://your_id.appspot.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()); //Et là on essaie ! try { MultipartEntityBuilder entityBuilder = MultipartEntityBuilder.create(); entityBuilder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); entityBuilder.addBinaryBody("Photo_a_uploader", f); entityBuilder.addTextBody("Type", "Type que l'utilisateur a choisi"); httppost.setEntity(entityBuilder.build()); HttpResponse response = httpClient.execute(httppost); } catch (ClientProtocolException e) { // Si on tombe dans le catch, on set notre variable à 2. e.printStackTrace(); } catch (IOException e) { // Si on tombe dans le catch, on set notre variable à 2. e.printStackTrace(); }The pre App Engine
@Override public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, 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/jpg") .acl("public-read") .addUsermetadata("myfield1", "my field value") .build(); GcsOutputChannel writeChannel = gcsService.createOrReplace(filename, options); ServletFileUpload upload = new ServletFileUpload(); res.setContentType("text/plain"); try { FileItemIterator iterator = upload.getItemIterator(req); while (iterator.hasNext()) { FileItemStream item = iterator.next(); InputStream stream = item.openStream(); if (item.isFormField()) { log.warning("Champs texte avec id: " + item.getFieldName()+", et nom: "+Streams.asString(stream)); } else { log.warning("Nous avons un fichier à uploader : " + item.getFieldName() + ", appelé = " + item.getName()); // You now have the filename (item.getName() and the // contents (which you can read from stream). Here we just // print them back out to the servlet output stream, but you // will probably want to do something more interesting (for // example, wrap them in a Blob and commit them to the // datastore). // Open a channel to write to it byte[] bytes = ByteStreams.toByteArray(stream); try { writeChannel.write(ByteBuffer.wrap(bytes)); } finally { writeChannel.close(); stream.close(); } } } } catch (FileUploadException e) { // TODO Auto-generated catch block e.printStackTrace(); } }我希望这些示例可以帮助您使用App Engine和Google云存储!



