我必须选择一个文件并发送到服务器。我正在使用以下代码
图库意图选择一个文件。
Intent intent = new Intent();
intent.setType("*/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(
Intent.createChooser(intent, "Select Image"), REQUEST_CODE);
OnActivityResult
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
if (data != null) {
Uri selectedImageUri = data.getData();
// GET IMAGE PATH
imagePath = getPath(selectedImageUri);
Log.d("", "Image path : " + imagePath);
// IMAGE NAME
imageName = imagePath.substring(imagePath.lastIndexOf("/"));
imageSize = this.getFileSize(imagePath);
// DECODE TO BITMAP
// Bitmap bitmap = BitmapFactory.decodeFile(imagePath);
// DISPLAY IMAGE
// imageView.setImageBitmap(bitmap);
imageLocationTextView.setText("File path :" + imagePath);
}
}
}
如果我将此行更改为
intent.setType("image/*");
到此
intent.setType("*/*");
我在onActivityResult上收到错误
11-30 14:45:24.389: E/AndroidRuntime(3126): java.lang.RuntimeException: Failure delivering result
ResultInfo{who=null, request=1, result=-1, data=Intent { dat=content://com.android.externalstorage.documents/document/0BEE-381E:splash.jpg flg=0x1 }}
to activity {shane.atom/shane.atom.MainActivity}: java.lang.NullPointerException:
Attempt to invoke virtual method 'int java.lang.String.lastIndexOf(java.lang.String)'
on a null object reference
我将图像上传到服务器但是当我尝试将文件上传到服务器时我失败了。请帮忙建议任何解决方案。
先谢谢。
答案 0 :(得分:0)
我们不是使用String. lastIndexOf
和substring
方法来获取图片名称,而是使用File. getName()
方法执行此操作:
if(imagePath !=null){
File file=new File(imagePath);
imageName = file.getName();
}
答案 1 :(得分:-1)
public String getRealPathFromURI(Context context, Uri contentUri) {
Cursor cursor = null;
try {
String[] proj = { MediaStore.Images.Media.DATA };
cursor = context.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();
}
}
}
另外,请检查在清单中读取和写入外部存储的许可