我正在尝试使用 Apache
FTPClient
将图片从 Samsung 上传到 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();
FTPClient.storeFile
的第一个参数是用于存储上传数据的文件的路径,而不是HTTP URL。
该路径是什么,取决于您的 FTP 服务器的配置方式。
它可以是绝对路径,例如:
link = "/home/user/public_html/image/ayri.jpg";
或者如果
user
帐户已 chroot,则可以是:
link = "/public_html/image/ayri.jpg";
或者完全不同的东西。请参阅如何获取上传到 FTP 服务器的文件的 HTTP URL(一个相反的问题,但答案无论如何都会给你一个想法)。
(无论如何,显然变量
link
的名字是错误的,应该是path
。)
所以我自己找到了答案,对于那些会遇到这个问题的人,首先对于POST或UPLOADING文件,始终使用Asynctask,否则它将永远无法工作。只需检查您的应用程序中是否有文件管理权限,您可以在设置 -> 应用程序 -> 您的应用程序 -> 权限 -> 存储中查看是否选中是。就是这样。
感谢 stackoverflow 的帮助!