Android 没有这样的文件或目录问题

Android 没有这样的文件或目录问题,android,image,file-upload,filenotfoundexception,fileinputstream,Android,Image,File Upload,Filenotfoundexception,Fileinputstream,我想使用多部分/表单数据将图像上载到服务器。用户使用图像选择器选择图像,如下所示: Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); act.startActivityForResult(intent, requestCode); 在他拾取图像后,我在onActivityResult中接收到它,代码如下: Uri selec

我想使用多部分/表单数据将图像上载到服务器。用户使用图像选择器选择图像,如下所示:

Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
act.startActivityForResult(intent, requestCode);
在他拾取图像后,我在onActivityResult中接收到它,代码如下:

Uri selectedImage = data.getData();
String[] filePathColumn = {MediaStore.Images.Media.DATA};
String filePath = null;

Cursor cursor = act.getContentResolver().query(selectedImage, filePathColumn, null, null, null);
if (cursor != null) {
    cursor.moveToFirst();
    filePath = cursor.getString(cursor.getColumnIndex(filePathColumn[0]));
    cursor.close();
}

return filePath;
所以我得到了文件的路径。当我想用以下代码将图像上载到服务器时:

File file = new File(filePath);
FileInputStream fileInputStream = new FileInputStream(file);
它抛出以下异常:

java.io.FileNotFoundException: /storage/sdcard0/DCIM/100LGDSC/CAM00015.jpg: open failed: ENOENT (No such file or directory)
问题是,有些照片被发现并上传(即使在SD卡上或不在SD卡上),而有些照片没有。。。例如,正在上载此文件:

/storage/sdcard0/DCIM/100LGDSC/CAM00008.jpg
我有以下权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />


所以问题很清楚,为什么找不到一些图像?

正如我在评论中提到的。这里是它的细节。
在某些设备中,当您捕获图像时,他们会立即将其保存到您的设备中,但有些设备不会这样做(这也取决于用户设置)。此外,如果您使用s5或任何其他具有高分辨率相机的手机拍摄图像,图像大小将在5到10 mb之间。把这么大的图片上传到服务器上不是一个好办法。我的建议是,你必须拍摄一张图片,保存在手机里,压缩并上传。在此之后,您还可以删除它。检查并链接以获取帮助,他正在保存和压缩图像。阅读,以便更好地理解位图等。

您是否具有互联网权限?请做一件事。将用户选择的照片保存到新位置。然后从中选择它。一旦它上传,删除它。是的,我忘了在这里添加一个。所以问题是MediaStore返回一个URI给一个不存在的图像a) 该文件实际存在吗?b) 你确定你通过内容提供商正确解析了URI(什么是
act
)?用户只是选择了设备上真正存在的图像。我也在我的应用程序外检查了它-在照片库中,路径与filenotfoundexception中的路径完全相同。。。对他们中的一些人来说效果很好,就像我在帖子中写的。。。act是我打电话给图像采集器的活动。OP说“用户使用图像采集器选择图像”-他的应用程序不需要在任何地方捕获或存储任何东西。那么你必须压缩它,这是我主要用于有效上传图像等的方法。据我所知,真正发生的是你的情况,捕获图像并请求上载后,图像将不在设备中。这可能不会保存在您的设备中。我正在开发一个应用程序,并面临这个问题。该代码在samsang设备上运行良好,而在htc设备上存在此问题(您正面临的问题)。这就是我建议的原因。剩下的就交给你了,快乐编码。你在应用程序中从哪里获得图像文件的位置?