Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我的InputStream不能在Android中工作?_Java_Android_Open Source_Ftp_Apache Commons - Fatal编程技术网

Java 为什么我的InputStream不能在Android中工作?

Java 为什么我的InputStream不能在Android中工作?,java,android,open-source,ftp,apache-commons,Java,Android,Open Source,Ftp,Apache Commons,我正在为我最喜欢的图像库软件编写一个android图像文件上传程序,它使用FTP。 我已经开始使用ApacheCommonsNetFTP作为基于的FTP库。像这样: FTPClient ftp = new FTPClient(); try{ ftp.connect(host); Log.i(TAG,"we connected"); if(!ftp.login(user,pass)){ ftp.logout(); //TODO: alert user it didn't

我正在为我最喜欢的图像库软件编写一个android图像文件上传程序,它使用FTP。 我已经开始使用ApacheCommonsNetFTP作为基于的FTP库。像这样:

FTPClient ftp = new FTPClient();
try{
  ftp.connect(host);
  Log.i(TAG,"we connected");
  if(!ftp.login(user,pass)){
    ftp.logout();
    //TODO: alert user it didn't happen
    return;
  }    
  String replyStatus = ftp.getStatus();
  Log.i(TAG,replyStatus);
  int replyCode = ftp.getReplyCode();
  if (!FTPReply.isPositiveCompletion(replyCode))
  {    
    ftp.disconnect();
    //TODO: alert user it didn't happen
    return;
  }    
  Log.i(TAG,"we logged in");
  ftp.changeWorkingDirectory(path);
  ftp.setFileType(ftp.BINARY_FILE_TYPE);
  for(int i = 0; i < contentUris.size(); i++){
    Log.i(TAG,"uploading new file");
    Uri stream = (Uri) contentUris.get(i);
    //InputStream in = openFileInput(getRealPathFromURI(stream));
    InputStream in =this.getContentResolver().openInputStream(stream);
    BufferedInputStream buffIn=null;
    buffIn=new BufferedInputStream(in);

    ftp.setFileType(ftp.BINARY_FILE_TYPE);
    boolean Store = ftp.storeFile("test.jpg", buffIn);
    Log.i(TAG, "uploaded test");
  }      
  ftp.disconnect();
}      
catch(Exception ex){
  //do something wise and smart and useful
}
FTPClient ftp=新的FTPClient();
试一试{
ftp.connect(主机);
Log.i(标记“我们已连接”);
如果(!ftp.login(用户,通过)){
ftp.logout();
//TODO:提醒用户它没有发生
返回;
}    
字符串replyStatus=ftp.getStatus();
Log.i(标签、回复状态);
int replyCode=ftp.getReplyCode();
如果(!FTPReply.isPositiveCompletion(replyCode))
{    
ftp.disconnect();
//TODO:提醒用户它没有发生
返回;
}    
Log.i(标记“我们登录”);
ftp.changeWorkingDirectory(路径);
setFileType(ftp.BINARY文件类型);
for(int i=0;i
我在登录的日志中看到,我可以更改目录,当我上传时,我的目录中有一个test.jpg,但大小为0字节

有什么好处?我没有打开输入流吗?我该怎么做


如果我没有提供足够的详细信息,请告诉我-问题似乎是您无法建立主动ftp连接,您必须使用被动模式。因此,将顶部改为:ftpClient.enterLocalPassiveMode()

FTPClient ftp=新的FTPClient();
试一试{
ftp.connect(主机);
ftp.enterLocalPassiveMode();
Log.i(标记“我们已连接”);
如果(!ftp.login(用户,通过)){
ftp.logout();
//TODO:提醒用户它没有发生
返回;
}
字符串replyStatus=ftp.getStatus();
Log.i(标签、回复状态);
int replyCode=ftp.getReplyCode();
如果(!FTPReply.isPositiveCompletion(replyCode))
{
ftp.disconnect();
//TODO:提醒用户它没有发生
返回;
}
Log.i(标记“我们登录”);
ftp.changeWorkingDirectory(路径);
setFileType(ftp.BINARY文件类型);
for(int i=0;i
FTPClient ftp = new FTPClient();
try{
  ftp.connect(host);
  ftp.enterLocalPassiveMode();
  Log.i(TAG,"we connected");
  if(!ftp.login(user,pass)){
    ftp.logout();
    //TODO: alert user it didn't happen
    return;
  }
  String replyStatus = ftp.getStatus();
  Log.i(TAG,replyStatus);
  int replyCode = ftp.getReplyCode();
  if (!FTPReply.isPositiveCompletion(replyCode))
  {
    ftp.disconnect();
    //TODO: alert user it didn't happen
    return;
  }

  Log.i(TAG,"we logged in");
  ftp.changeWorkingDirectory(path);
  ftp.setFileType(ftp.BINARY_FILE_TYPE);
  for(int i = 0; i < contentUris.size(); i++){
    Log.i(TAG,"uploading new file");
    Uri stream = (Uri) contentUris.get(i);
    String filePath = getRealPathFromURI(stream);
    InputStream in = new FileInputStream(filePath);
    ftp.setFileType(ftp.BINARY_FILE_TYPE);

    boolean Store = ftp.storeFile("test.jpg", in);
    Log.i(TAG, "uploaded test");
  }


  ftp.disconnect();
}
catch(Exception ex){
  //TODO: properly handle exception
  //Log.i(TAG,ex);
  //TODO:Alert the user this failed
}