Java:上传文件到FTP问题(丢包)

frx*_*x08 2 java ftp ftp-client apache-commons-net

我正在尝试将文件从我的Java应用程序传输到FTP服务器程序正常工作,文件被传输,但是当我在FTO文件夹中打开时,文件已损坏,我认为文件在文件丢失期间丢失传递.为什么?我该如何解决这个问题?

另一个问题,while如果我想停止文件上传,我怎么能停止?

谢谢大家!

我班里的代码:

FTPClient client = new FTPClient();
InputStream is = null;
//...
try{
 client.connect(MY_FTP_URL);
 client.login(USER, PASS);
 InputStream is = new FileInputStream(file_path);
 OutputStream os = client.storeFileStream(file_name);
 byte[] buffer = new byte[1024];
 int len;
 //I use this way to check the transfer progress
 while((len = is.read(buffer)) != -1){
  os.write(buffer, 0, len);
  os.flush();
 }
 os.close();
} catch (IOException e){
 e.printStackTrace();
} finally{
 try{
  if(is != null){
   is.close();
  }
  client.disconnect();
 } catch(IOException e){
  e.printStackTrace();
 }
}
Run Code Online (Sandbox Code Playgroud)

J-1*_*DiZ 7

查看常见问题解答:

问:为什么我的文件在转移后损坏了?

答:最常见的原因是当文件以ASCII格式传输但文件内容不是ASCII时,文件应作为BINARY传输.RFC 959表示默认传输模式应为ASCII.FTPClient符合标准.您必须显式调用setFileType(FTP.BINARY_FILE_TYPE); 登录FTP服务器后请求二进制传输模式.

呼叫 setFileType(FTP.BINARY_FILE_TYPE);