2016-09-10 1 views
0

Ich benutze Webview-Komponente auf meiner Android App. Benutzer können Bilder aus der Android-Fotobibliothek laden und diese Bilder auf einer Webseite in der Webansicht anzeigen. Wie kann ich dieses Bild von Javascript auf meinen Backend-Server hochladen?So laden Sie Foto aus der Bibliothek in Webview in Android App

Unten ist mein Java-Code Bild chooser Verhalten zu handhaben:

setWebChromeClient(new WebChromeClient() { 

      @Override 
      public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, FileChooserParams fileChooserParams) { 
       Intent intent = new Intent(Intent.ACTION_PICK); 
       intent.setType("image/*"); 
       intent.setAction(Intent.ACTION_GET_CONTENT); 
       Intent chooser = Intent.createChooser(intent, "Select Image"); 
       activity.startActivityForResult(chooser, ResultCode.CHOOSE_PHOTO_REQUEST); 
       return false; 
      } 
     }); 

der obige Code Bild Picker zeigen wird und wenn ein Benutzer ein Bild auswählen, das onActivityResult wird das ausgewählte Bild Pfad Javascript passieren wie folgt:

 if (resultCode == Activity.RESULT_OK) { 
      Uri imageUri = imageReturnedIntent.getData(); 
      Log.d("IMAGE", "choose image uri " + imageUri); 
      String path = getRealPathFromURI(imageUri); 
      Log.d("IMAGE", "choose image real path " + path); 
      webView.loadUrl("javascript:choosePhotos('" + path + "')"); 
     } 

     public String getRealPathFromURI(Uri contentUri) { 
     Cursor cursor = null; 
     try { 
      String[] proj = {MediaStore.Images.Media.DATA}; 
      cursor = mainActivity.getContentResolver().query(contentUri, proj, null, null, null); 
      int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
      cursor.moveToFirst(); 
      return cursor.getString(column_index); 
     } finally { 
      if (cursor != null) { 
       cursor.close(); 
      } 
     } 
    } 

in Javascript, kann ich den Bildpfad auf einem <img src=''/> Tag setzen die ausgewählten Bilder zu zeigen. Der Pfad ist ungefähr so: '/storage/emulated/0/DCIM/Camera/IMG_20160808_200837.jpg'

Es funktioniert hier gut. Aber jetzt möchte ich dieses Bild auf meinen Backend-Server hochladen. Wie kann Javascript diesen Pfad behandeln: /storage/emulated/0/DCIM/Camera/IMG_20160808_200837.jpg.

+0

Versuchen Sie, diese Lösung erhalten, wo Sie Java-Code von Javascript also tun, um die Upload-nativ ausführen kann - http://stackoverflow.com/questions/10389572/call-java-function -from-javascript-über-android-webview – Tasos

Antwort

0

Sie können filePathCallback verwenden, um die ausgewählte Datei an webview zu übergeben. Erstellen Sie einfach eine globale Variable

ValueCallback filePathCallback;

und weisen Sie ihm den Parameter der Methode onShowFileChooser() zu. dann können Sie diesen Callback in onActivityResult() verwenden, um die ausgewählte Datei an webview zu übergeben als:

Uri Ergebnisse [] = new Uri [] {imageUri};

filePathCallback.onReceiveValue (Ergebnisse);

dann auf HTML finden Sie Datei auf

+0

Ich kann die Datei uri in Webview erhalten. Meine Frage ist, wie man diese Datei von Javascript in Webview auf den Server hochlädt. –

+0

Wenn Sie eine Eingabedatei in html wie im Formular verwenden, können Sie einfach das Formular hier ** ** enctype einreichen ** ist Kobold. Und Sie können einfach Formular von Ajax hochladen. siehe http://StackOverflow.com/a/22621393/1938011 –

Verwandte Themen