FTP上传不适用于Android

时间:2017-10-17 18:18:51

标签: java android ftp apache-commons-net

我正在尝试使用Apache FTPClient将图片从三星上传到FTP服务器。但它似乎没有用。我不知道为什么,代码很好。我正在尝试选择一张图片将其上传到服务器上,selectedImage变量是图片文件的完整路径。

FTPClient ftpClient = new FTPClient();
ftpClient.connect(InetAddress.getByName("ftpserver"));
ftpClient.login("user", "password");
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);

FileInputStream buffIn = null;
buffIn = new FileInputStream(new File(getRealPathFromURI(selectedImage)));
ftpClient.enterLocalPassiveMode();
link = "http://ftpname/home/user/public_html/image/ayri.jpg";
ftpClient.storeFile(link, buffIn);
buffIn.close();
ftpClient.logout();
ftpClient.disconnect();

2 个答案:

答案 0 :(得分:0)

FTPClient.storeFile的第一个参数是用于存储上传数据的路径,而不是 HTTP网址

该路径是什么,取决于您的FTP服务器的配置方式。

它可以是绝对路径,如:

link = "/home/user/public_html/image/ayri.jpg";

或者,如果user帐户是chrooted,则可以是:

link = "/public_html/image/ayri.jpg";

或者完全不同的东西。请参阅How to get HTTP URL of file uploaded to FTP server(相反的问题,但无论如何答案都会给你一个想法)。

(无论如何,显然变量link的名称是错误的,它应该是path。)

答案 1 :(得分:0)

所以我找到了答案,对于那些遇到此问题的人,首先是 POST 上传文件,总是使用Asynctask,如果不会永远不会奏效。只需检查您的应用程序中是否有文件管理权限,您可以在设置中看到 - >申请 - >你的应用 - >许可 - >存储检查是。就是这样。

感谢stackoverflow的帮助!