我想编写一个Android应用程序,将文件上传到FTP服务器。
我使用Apache Commons FTP库进行FTP连接。
当我使用硬编码的文件路径到本地文件时,它会按预期工作。
这是我的代码:
public String file = "/storage/emulated/0/test.txt";
...
FTPClient ftpClient = new FTPClient();
ftpClient.connect(host);
int reply = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)){
Toast.makeText(getApplicationContext(), "FTP server refused connection.", Toast.LENGTH_SHORT).show();
}
ftpClient.login(user, password);
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
ftpClient.enterLocalPassiveMode();
InputStream fis = new FileInputStream(file);
ftpClient.storeFile("/test.txt", fis);
fis.close();
ftpClient.logout();
ftpClient.disconnect();
如您所见,我使用了本地文件的完整路径,并为远程文件指定了相同的文件名。
现在,我要让用户选择文件。
我用过:
Intent chooseFile = new Intent(Intent.ACTION_GET_CONTENT);
chooseFile.setType("*/*");
chooseFile = Intent.createChooser(chooseFile, "Choose a file");
startActivityForResult(chooseFile, PICKFILE_RESULT_CODE);
并且:
public void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case PICKFILE_RESULT_CODE:
if (resultCode == -1) {
Uri fileUri = data.getData();
file = fileUri.getPath();
问题:
我的变量“文件”为我提供了“ / document / image:138031”,而不是文件的实际路径。
我现在如何获取真实的文件路径?
我读了一些有关将URI转换为路径的内容,但是我发现的所有示例都非常古老,并且无法与API29(Pie)一起使用。
有人可以帮助我吗?
提前谢谢!