我想将捕获的图像从Android手机上传到Ftp服务器我已经编写了以下代码我在此行之后面临错误ftp.store(远程,输入) 我得到replycode = 550文件不可用我使用apache commons-net 3.3库我试过了 与.net中的WebClient相同它工作正常但在java中它给了我错误(550)我搜索了许多网站但没有帮助我甚至称为托管服务他们说没有问题从那边我从最后1天停留plz纠正我什么我在这里失踪......
我的代码:
private void UploadImage(){
FTPClient ftp = new FTPClient();
try {
ftp.connect("hostname",21);// Using port no=21
int reply = ftp.getReplyCode(); //here i m getting 220
ftp.login("abc", "abc");
reply = ftp.getReplyCode(); //here i m getting 230
ftp.setFileType(FTP.BINARY_FILE_TYPE);
reply = ftp.getReplyCode();
ftp.enterLocalPassiveMode();
reply = ftp.getReplyCode();
File sfile = new File(PhotoPath); //here i m getting /mnt/sdcard/DCIM/CameraSample/abc769708880.jpg
String filename = sfile.getName();
FileInputStream fis = new FileInputStream(sfile);
boolean aRtn=ftp.storeFile("ftpPath"+sfile.getName(), fis);// return true if successful
reply = ftp.getReplyCode(); // here im getting 550
if(aRtn == true)
{
Toast toast= Toast.makeText(getApplicationContext(),
"Successfull", Toast.LENGTH_LONG);
toast.setGravity(Gravity.CENTER_HORIZONTAL|Gravity.CENTER, 0, 0);
toast.show();
}
fis.close();
ftp.disconnect();
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
答案 0 :(得分:0)
当您尝试从主线程执行网络操作(例如FTP)时,似乎会抛出该异常。出于性能原因,这是不允许的(因此在执行可能需要一段时间的操作时,应用程序似乎不会锁定用户)。假设您使用的是Honeycomb或更高版本,则需要将连接的代码移动到其自己的子线程中。
http://developer.android.com/reference/android/os/NetworkOnMainThreadException.html
http://developer.android.com/guide/practices/design/responsiveness.html