2017-10-17 117 views
-1

我正尝试使用Apache FTPClient将图片从三星上传到FTP服务器。但它似乎并不奏效。我不知道为什么,代码很好。我试图选择一个图像上传到服务器上,selectedImage变量是图片文件的完整路径。FTP上传不起作用Android

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(); 

回答

0

所以,我发现自己的答案,对于那些你们谁都会遇到这样的问题,首先,为POST上传文件,总是使用Asynctask,如果没有,它将永远不会工作。只需在应用程序中检查您是否具有文件管理权限,即可在设置 - >应用程序 - >您的应用程序 - >权限 - >存储检查是。就是这样。

谢谢你的帮助!

0

FTPClient.storeFile的第一个参数是一个路径到文件存储上传的数据到,而不是一个HTTP URL

该路径是什么取决于您的FTP服务器如何配置。

它可以像一个绝对路径:

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

或者如果user帐户chroot的,也可以是:

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

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

(在任何情况下,显然变量link的名字是错误的,它应该是path。)

+0

我又遇到了一个问题,问题是应用程序可以连接到FTP服务器,但不能在其上存储任何东西。我尝试哟改变图片文件的路径,但它不工作,我完全丢失 –

+0

你能用一些GUI FTP客户端,如WinSCP登录到服务器吗?一旦连接,您在文件面板中会看到什么路径? –

+0

是的,我可以,实际上我使用的是Filezilla。我真的有一个与POST和FILE与Android的大问题,它只是不能工作 –