【发布时间】:2016-09-10 12:32:20
【问题描述】:
我在我的 android 应用程序上使用 webview 组件。用户可以从 android 照片库中加载图像,并在 webview 的网页上显示这些图像。如何从 javascript 将这些图像上传到我的后端服务器?
下面是我处理图像选择器行为的 java 代码:
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;
}
});
上面的代码将显示图像选择器,当用户选择图像时,onActivityResult 会将选择的图像路径传递给 javascript,如下所示:
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();
}
}
}
在 javascript 中,我可以将图像路径放在 <img src=''/> 标记上以显示所选图像。路径是这样的:'/storage/emulated/0/DCIM/Camera/IMG_20160808_200837.jpg'
在这里工作正常。但现在我想将此图像上传到我的后端服务器。 javascript如何处理这个路径:/storage/emulated/0/DCIM/Camera/IMG_20160808_200837.jpg。
【问题讨论】:
-
试试这个解决方案,您可以从 javascript 执行 java 代码,即本地上传 -- stackoverflow.com/questions/10389572/…
标签: javascript android image webview