我只是使用webview的隐藏方法上传一个名称中文的文件,如下所示:
public void openFileChooser(ValueCallback<Uri> uploadMsg) {
mUploadMessage = uploadMsg;
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("image/*");
((Activity) mContext).startActivityForResult(
Intent.createChooser(i, "File Chooser"),
WebViewActivity.FILECHOOSER_RESULTCODE);
}
// For Android 3.0+
public void openFileChooser(ValueCallback uploadMsg,
String acceptType) {
mUploadMessage = uploadMsg;
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("*/*");
((Activity) mContext).startActivityForResult(
Intent.createChooser(i, "File Browser"),
WebViewActivity.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("*/*");
((Activity) mContext).startActivityForResult(
Intent.createChooser(i, "File Chooser"),
WebViewActivity.FILECHOOSER_RESULTCODE);
}
});
此代码运行良好,我可以成功上传文件而无需中文字符。当我选择一个名字有中文字符的文件时出现问题,然后我得到这样的回调:
if (null == mUploadMessage) return;
Uri result = intent == null || resultCode != RESULT_OK ? null : intent.getData();
mUploadMessage.onReceiveValue(***result***);
mUploadMessage = null;
这个结果是URI的类型,它的路径包含中文,然后出现问题,WebView给出了一个例外:
net::ERR_FILE_NOT_FOUND
,我尝试使用utf-8格式化Uri的路径,但它不起作用。
有没有人遇到过这个问题?我一直在为此烦恼3天,谁能帮助我,非常感谢!!!
答案 0 :(得分:0)
可以通过w3c将中文改为iso8859或其他人