1

Basically I follow the answer of this thread to implement the file chooser in the upload.

     WebChromeClient mWebChromeClient = new WebChromeClient() {

        @Override
        public void onReceivedTitle(WebView view, String title) {
            if ((title != null) && (title.trim().length() != 0)) {
                setTitle(title);
            }


        }

        public void openFileChooser(ValueCallback<Uri> uploadMsg) {  

         mUploadMessage = uploadMsg;  
         Intent i = new Intent(Intent.ACTION_GET_CONTENT);  
         i.addCategory(Intent.CATEGORY_OPENABLE);  
         i.setType("image/*");  
         MainActivity.this.startActivityForResult(Intent.createChooser(i,"File Chooser"), FILECHOOSER_RESULTCODE);  
        }

       public void openFileChooser(ValueCallback uploadMsg, String acceptType) {
            mUploadMessage = uploadMsg;
            Intent i = new Intent(Intent.ACTION_GET_CONTENT);
            i.addCategory(Intent.CATEGORY_OPENABLE);
            i.setType("image/*");
            MainActivity.this.startActivityForResult(
            Intent.createChooser(i, "File Chooser"),
            FILECHOOSER_RESULTCODE);
        }

     //For Android 4.1
        public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture){
            mUploadMessage = uploadMsg;  
            Intent i = new Intent(Intent.ACTION_GET_CONTENT);  
            i.addCategory(Intent.CATEGORY_OPENABLE);  
            i.setType("image/*");  
            MainActivity.this.startActivityForResult( Intent.createChooser( i, "File Chooser" ), MainActivity.FILECHOOSER_RESULTCODE );
        }
    };

    protected void onActivityResult(int requestCode, int resultCode,  
            Intent intent) 
    {  
        if(requestCode==FILECHOOSER_RESULTCODE)  
        {  
            if (null == mUploadMessage) return;  
            Uri result = intent == null || resultCode != RESULT_OK ? null  
            : intent.getData();
            mUploadMessage.onReceiveValue(result);  
            mUploadMessage = null;  
        }
    }

However, when the result is passed back to the webview, the "filename" of the image are not always exactly its name. (For example, abc.jpg).When using print_r($_FILES["file"]) in my backend PHP, it shows the filename is something like this: enter image description here

While the file name is not same as the original picture and doesn't get the file extension (.jpg, .gif, etc)inside. But the image itself could be uploaded successfully.

Since I would need to manipulate on the Filename (And most importantly the file extension for type checking) of the image, I would like to ask how to retrieve a image result from the Webview, which would got it's true filename? (And its file extension?)

Community
  • 1
  • 1
passer
  • 634
  • 2
  • 8
  • 16

0 Answers0