Я использую 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
Это загруженное неудачу изображение
Кто имеет какие-либо идеи?
Заранее спасибо.
Эрик
====================== Дополнительная информация: распечатать содержимое файла в JavaScript.
alert(JSON.stringify(file));
И показывает
{"webkitRelativePath":"","lastModified Date":"2015-01-17T10:04:30.000Z","name":"12255","type":"","size":2369496}
Это кажется, что файл загружен изображение не имеет атрибута "тип".
Кто-нибудь знает почему?
Спасибо.
дубликат вашей собственный вопрос: http://stackoverflow.com/questions/28273236/android-webview-upload-image-at-android-client-side-cannot-get-the-file-type-i – caw