我正在尝试在服务器上传视频。这就是我获取视频的方式
intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("video/*");
startActivityForResult(intent, SELECT_VIDEO);
我以这种方式获取文件
Uri uri = data.getData();
这是我收到的
内容://com.android.providers.media.documents/document/video%3A165191
我以这种方式展示视频预览
mVideoView.setVideoURI(uri);
mVideoView.requestFocus();
mVideoView.start();
预览播放完美。然后我需要制作一个文件将其上传到服务器。我以这种方式制作这个文件
file = new File(uri.getPath());
但是当我到达下面一行时,它会出错
FileInputStream fileInputStream = new FileInputStream(file);
我也试过uri.toString();但仍然是错误。我收到的错误如下:
2错误:/ document / video:165191:open failed:ENOENT(没有这样的文件或 目录) java.io.FileNotFoundException:/ document / video:165191:open failed: ENOENT(没有这样的文件或目录)
请有人帮助我...这真让我感到沮丧..
答案 0 :(得分:0)
您获得的数据URI不需要是文件系统上的路径 - 某些应用程序将其实现为路径,其他应用程序将其作为唯一URI通过ContentResolver
公开其数据。
你最好的选择是调用openInputStream(uri)
,它会返回一个InputStream。根据您对服务器上载的实现,您可以使用它直接将字节流式传输到服务器,或将字节传递给FileOutputStream
,将数据保存到文件中并将其用于上传。