我试图通过POST HTTP方法将保存在android中的/storage/emulated/0/Videos/someVideo.3gp中的录制视频文件传递给远程服务器。我使用this作为以FileBody格式将视频文件传递到远程服务器的方法。但是,当我尝试执行httpClient.execute(request)
命令时,它只是继续抛出 FileNotFoundException 。
所以,我不明白为什么视频文件无法被外界访问,因为我已使用getExternalStorageDirectory()
将其保存到SD卡。我还为清单文件添加了写权限。
P.S。我正在使用Nexus 7来测试它。请帮忙..
提前致谢!
答案 0 :(得分:1)
在执行httpClient.execute(request)
之前是否检查文件的存在?
引用您所关注的问题:
File sourceFile = new File(sourceFileUri);
if (!sourceFile.isFile()) {
Log.e("Huzza", "Source File Does not exist");
return 0;
}
修改:
可能是你没有在onActivityResult(...) method
上正确地从Uri转换路径
我正在分享获取正确路径的代码,它在我的应用程序中运行良好。
String videoPath = "";
try
{
String[] filePathColumn = { MediaStore.Video.Media.DATA };
Cursor cursor = getContentResolver().query(selectedVideoUri,
filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
videoPath = cursor.getString(columnIndex);
cursor.close();
} catch (Exception e) {
Log.e(TAG,
"Error parsing Video path = " + e.toString());
}