Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 尝试从Android应用程序将录制的视频上载到服务器时FileNotFoundException_Java_Android_Uri - Fatal编程技术网

Java 尝试从Android应用程序将录制的视频上载到服务器时FileNotFoundException

Java 尝试从Android应用程序将录制的视频上载到服务器时FileNotFoundException,java,android,uri,Java,Android,Uri,我正在尝试录制一段视频,然后在完成后将其上传到服务器。相关代码如下: public void recordVideo(View view){ Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); startActivityForResult(takeVideoIntent, VIDEO_RESULT); } @Override protected void onActivityResult(i

我正在尝试录制一段视频,然后在完成后将其上传到服务器。相关代码如下:

public void recordVideo(View view){
    Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
    startActivityForResult(takeVideoIntent, VIDEO_RESULT);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == VIDEO_RESULT){
        handleCameraVideo(data);
    }
}

private void handleCameraVideo(Intent intent) {
    Uri mVideoUri = intent.getData();
    File vidFile = new File(mVideoUri.getPath());
    RequestParams params = new RequestParams();
    try{
        params.put("video", vidFile);
    } 
    catch (FileNotFoundException e) {
        e.printStackTrace();
    }
        //finish upload here, this part isn't relevant to my question
}

问题是,在我的
try
块中,会抛出FileNotFoundException,并打印堆栈跟踪。似乎我应该得到正确的文件:我得到了大部分代码,直到我从Android开发者网站创建文件的那一部分,所以它应该可以工作——这让我相信问题出在
file vidFile=new文件(mVideoUri.getPath())行。任何帮助都将不胜感激。

我最后在这里找到了另一个问题,其中有一些代码帮助了我:

private String getRealPathFromURI(Uri contentUri) {
        String[] proj = { MediaStore.Images.Media.DATA };
        Cursor cursor = managedQuery(contentUri, proj, null, null, null);
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(column_index);
    }
然后在我的
handleCameraVideo
方法中:

private void handleCameraVideo(Intent intent) {
    Uri mVideoUri = intent.getData();
    String data = getRealPathFromURI(mVideoUri);
    File vidFile = new File(data);
 ....

这可以工作并为我找到正确的文件。

这可能会有所帮助,请尝试进一步调试并查看文件最终指向的路径。我猜URI可能没有在有意义的文件路径中正确转换。