4
我想从图库中选择图像,然后将此图像转换为文件并通过HttpPost发送它,但我总是得到FileNotFoundException
。这是我的代码:从Uri类型创建文件android
选择照片
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == Activity.RESULT_OK) {
if (requestCode == 1) {
// currImageURI is the global variable I’m using to hold the content:
currImageURI = data.getData();
//Save the currImageUri (URI type) to global variable.
photosHolder.getInstance().setOneIm(currImageURI);
}
}
}
转换照片
// First Try
File myFile = new File((photosHolder.getInstance().getOneIm()).toString());
params.put("visit_report[photos_attributes][0][file]",myFile); **The exception Raised here
// second try
File myFile2 = new File((photosHolder.getInstance().getOneIm()).getPath());
params.put("visit_report[photos_attributes][1][file]",myFile2); ** Also here
而这些都是MYFILES价值,同时调试运行:
mFile : content:/com.android.providers.media.documents/document/image%3A19143
myFile2 : /document/image:19143
因此,任何他LP?
更新 我曾尝试这种解决方案也:
//get The real path from uri then save it (and then use it to create the file)
photosHolder.getInstance().setUriString(getRealPathFromURI(currImageURI));
//Convert the image URI to the direct file system path of the image file
private String getRealPathFromURI(Uri contentURI) {
String result = "";
try {
Cursor cursor = getActivity().getContentResolver().query(contentURI, null, null, null, null);
if (cursor == null) { // Source is Dropbox or other similar local file path
result = contentURI.getPath();
} else {
cursor.moveToFirst();
int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
result = cursor.getString(idx); // Exception raised HERE
cursor.close(); }
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
但我得到java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it
和idx
VAR ==来-1
而且我已经试过@Praneeth卡鲁解决方案,但它返回结果始终为空。
我想这已经检查我的更新吧。 – Chlebta 2014-11-24 11:44:07
你给的函数总是返回null。 – Chlebta 2014-11-24 12:11:05