0

Я использую Android WebView для отображения веб-страницы веб-сервера в Android 4.4.4. Но на стороне сервера проверка JavaScript для типа файла изображения завершается с ошибкой. Поэтому я не могу загрузить свое изображение.Android: Android 4.4.4 WebView загружает изображение, но JavaScript проверяет тип файла error

Но без изменения кода на стороне сервера, я могу загрузить изображение в iOS WebView и на рабочем столе с использованием того же файла изображения.

Ниже моей стороне сервера код JavaScript изображения клетчатой ​​

var check_file = function (file) { 
    if (file.size > 1048576 * 10) { 
     upload_err_hdlr(413); 
     return false; 
    } 
    alert("Before Check"); 
    if (!file.type.match(/image\/(jpeg|png|gif|jpg)/)) { 
     alert("Check fail"); 
     upload_err_hdlr(415); 
     return false; 
    } 
    alert("Check successfully"); 
    return true; 
}; 

после того, как загрузить изображение с помощью Android 4.4.4 WebView, он показывает предупреждающее диалоговое 1. Перед проверкой 2. Проверить неудачу

Ниже мой Android код

public class MainActivity extends Activity { 
    private static final int FILE_CHOOSER_RESULT_CODE = 1; 
    WebView mWebView; 
    private ValueCallback<Uri> mUploadMessage; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     mWebView = (WebView) findViewById(R.id.webview); 
     mWebView.setWebViewClient(new CustomWebViewClient()); 
     mWebView.setWebChromeClient(new WebChromeClient() { 
      public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture){ 
      mUploadMessage = uploadMsg; 
      Intent intent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
      startActivityForResult(intent, FILE_CHOOSER_RESULT_CODE); 
      } 
     }); 
     WebSettings webSettings = mWebView.getSettings(); 
     webSettings.setJavaScriptEnabled(true); 
     CookieManager.setAcceptFileSchemeCookies(true); 
     CookieManager cookieManager = CookieManager.getInstance(); 
     cookieManager.setAcceptCookie(true); 
     mWebView.loadUrl("http://192.168.1.30:5000/dashboard"); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent intent) { 
     if(requestCode == FILE_CHOOSER_RESULT_CODE) { 
      if(mUploadMessage == null) 
       return; 
      Uri result = intent == null || resultCode != RESULT_OK ? null : intent.getData(); 
      Log.d("Ting", "after result:" + result); 
      mUploadMessage.onReceiveValue(result); 
      mUploadMessage = null; 
     } 
    } 

    private class CustomWebViewClient extends WebViewClient { 
    } 

} 

Андроид журнал "Тины" показывают:

02-02 11: 44: 14,782 12456 12456 D Тин: после того, как результат: содержание: // медиа/внешний/изображений/медиа/12255

The Uri является содержание: // медиа/внешние/изображений/СМИ/12255

Это загруженное неудачу изображение enter image description here

Кто имеет какие-либо идеи?

Заранее спасибо.

Эрик

====================== Дополнительная информация: распечатать содержимое файла в JavaScript.

alert(JSON.stringify(file)); 

И показывает

{"webkitRelativePath":"","lastModified Date":"2015-01-17T10:04:30.000Z","name":"12255","type":"","size":2369496} 

Это кажется, что файл загружен изображение не имеет атрибута "тип".

Кто-нибудь знает почему?

Спасибо.

+0

дубликат вашей собственный вопрос: http://stackoverflow.com/questions/28273236/android-webview-upload-image-at-android-client-side-cannot-get-the-file-type-i – caw

ответ

0

это потому, что тип файла не поддерживается в мобильных браузерах, проверка File type Support

Вы можете попробовать проверить тип файла, используя регулярное выражение:

if((/\.(gif|jpg|jpeg|tiff|png)$/i).test("filename")) { 
 
    // the file is an image 
 
} else { 
 
    //file type is different than (JPEG,PNG,GIF,TIFF) 
 
}

 Смежные вопросы

  • Нет связанных вопросов^_^