android 调照相机拍照上传时出错问题

手机拍照然后上传图片时,路径不为空为什么总是上传失败啊?但是选择本地相册是成功的,照相之后打印出来的图片路径是/storage/emulated/0/Pictures/1476511270681.jpg。调取照相机的方法用了两种,第一种使用PhotoPicker中的方式;第二种代码如下:
private void takePhoto() {
String SDState = Environment.getExternalStorageState();
if (SDState.equals(Environment.MEDIA_MOUNTED)) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
SimpleDateFormat timeStampFormat = new SimpleDateFormat(
"yyyy_MM_dd_HH_mm_ss");
String filename = timeStampFormat.format(new Date());
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, filename);
photoUri = getContentResolver().insert(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
//Log.e("takePhoto", "-------------"+photoUri.toString());
intent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
startActivityForResult(intent, SELECT_PIC_BY_CAMERA);
}
}
有没有大神遇到过问题啊?请指点一下吧!

你这样试下,我使用摄像头拍照,是可以取出图片展示的。
public final static int CODE_TAKE_PICTURE = 1111;
private String fileName;

//调用摄像头拍照
public void doTakePicture() {
if (!Environment.getExternalStorageDirectory().exists()) {
Toast.makeText(this, "SD卡不存在,不能拍照", Toast.LENGTH_SHORT).show();
return;
}
String sdcard = Environment.getExternalStorageDirectory().toString();
File file = new File(sdcard + "/camera/");
if (!file.exists()) {
boolean isMade = file.mkdirs();
Log.d("mkDir--", "" + isMade);
}

    fileName = String.valueOf(new Date().getTime()) + ".jpg";
    File cameraFile = new File(file.getAbsolutePath(), fileName );
    Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(cameraFile));
    startActivityForResult(cameraIntent ,CODE_TAKE_PICTURE);
    setResult(Activity.RESULT_OK, cameraIntent);
}

    //传入uri转换为真正路径
    public static String getRealFilePath( final Context context, final Uri uri ) {
    if( null == uri ) return null;
    final String scheme = uri.getScheme();
    String data = "";
    if( scheme == null )
        data = uri.getPath();
    else if ( ContentResolver.SCHEME_FILE.equals( scheme ) ) {
        data = uri.getPath();
    } else if ( ContentResolver.SCHEME_CONTENT.equals( scheme ) ) {
        Cursor cursor = context.getContentResolver().query( uri, new String[] { MediaStore.Images.ImageColumns.DATA }, null, null, null );
        if ( null != cursor ) {
            if ( cursor.moveToFirst() ) {
                int index = cursor.getColumnIndex( MediaStore.Images.ImageColumns.DATA );
                if ( index > -1 ) {
                    data = cursor.getString( index );
                }
            }
            cursor.close();
        }
    }
    return data;
}

    //在Activity的onActivityResult里面读取拍照照片路径并取出来:
    @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(resultCode == RESULT_OK){
        switch (requestCode){
            case CODE_TAKE_PICTURE://拍照照片

                try {
                File mFile = new File(Environment.getExternalStorageDirectory() + "/camera/" + fileName);
                Uri mUri = Uri.parse(MediaStore.Images.Media.insertImage(getContentResolver(), mFile.getAbsolutePath(), null, null));
                String realFilePath = getRealFilePath(this, mUri);//获取真正的图片路径
                Log.d("cameraUri", realFilePath);
                Bitmap bitmap = BitmapFactory.decodeFile(realFilePath);
                }catch (FileNotFoundException e){
                    e.printStackTrace();
                }
                break;
            default:
                break;
        }
    }
}