嘿我正在尝试将图像上传到我的ftp服务器,但由于某种原因连接不起作用,我可以找出原因..
这是连接代码:
public void uploadingFilestoFtp() throws IOException {
FTPClient ftpclient = new FTPClient();
FileInputStream fis = null;
boolean result;
try {
ftpclient.connect(host);
result = ftpclient.login(username, password);
if (result == true) {
System.out.println("Logged in Successfully !");
} else {
System.out.println("Login Fail!");
return;
}
ftpclient.setFileType(FTP.BINARY_FILE_TYPE);
ftpclient.changeWorkingDirectory("/");
File file = new File(imagePath);
fis = new FileInputStream(file);
// Upload file to the ftp serverresult = ftpclient.storeFile(testName, fis);
if (result == true) {
System.out.println("File is uploaded successfully");
} else {
System.out.println("File uploading failed");
}
ftpclient.logout();
} catch (FTPConnectionClosedException e) {
e.printStackTrace();
} finally {
try {
ftpclient.disconnect();
} catch (FTPConnectionClosedException e) {
System.out.println(e);
}
}
}
我正在使用ftp服务器的详细信息,但它似乎无法正常工作
我怎样才能让这个方法发挥作用?
答案 0 :(得分:0)
android.os.NetworkOnMainThreadException
您正尝试从UI线程发出网络请求。 Android不允许来自主(UI)线程的任何网络请求。您需要创建一个扩展AsyncTask的类。
public class UploadFileTask extends AsyncTask <Void, Void, Void > {
public void onPreExecute() {
}
public void doInBackground(Void...unused) {
uploadingFilestoFtp(); //Call your method here. Put necessary try-catch block.
}
public void onPostExecute(Void unused) {
// do something when upload is done.
}
}
请注意,此onPreExecute()
和onPostExecute()
在UI线程上运行。所以你可以在网络通话之前或之后做任何事情。使用doInBackground()
方法进行网络呼叫。