CodenameOne:捕获图片无法访问,API多图上传遇文件校验失败
问题解决:Capture捕获图片后FileSystemStorage校验文件存在失败
问题根源:
FileSystemStorage.getInstance().exists()方法不支持带file://协议前缀的路径,它只识别本地文件系统的纯绝对路径。你拿到的路径是URI格式(带file://),所以校验会返回false,后续上传也会因路径格式不符失败。解决步骤:
- 先移除路径中的
file://前缀:// 处理路径,去掉file://前缀 String localFilePath = filename.replaceFirst("^file://", ""); // 现在校验文件存在状态会正常返回 Boolean exists = FileSystemStorage.getInstance().exists(localFilePath); - 上传时使用处理后的纯本地路径:
request.addData(fn, localFilePath, "image/jpeg");
- 先移除路径中的
补充说明:这不是模拟器的问题,是不同API对路径格式的要求差异导致的。Capture返回的是URI格式路径,而FileSystemStorage和Multipart请求需要的是本地文件系统的直接路径,做个简单的前缀替换就能解决问题。
内容的提问来源于stack exchange,提问作者Tony
相关产品推荐
相关产品推荐

