求解'Apache的FTPClient上传.gz文件解压失败'

ladybirds2008 2012-07-18 10:31:29
用'Apache的FTPClient上传.gz文件至linux系统后,用gunzip命令进行解压报错,请大侠给个明确解释!
如下:
gunzip xxx.csv.gz
gunzip: xxx.csv.gz: invalid compressed data--crc error
gunzip: xxx.csv.gz: invalid compressed data--length error


/**
* 向FTP服务器上传文件
*
* @param url
* FTP服务器IP
* @param port
* FTP服务器端口
* @param username
* FTP登录账号
* @param password
* FTP登录密码
* @param path
* FTP服务器保存目录
* @param filename
* 上传到FTP服务器上的文件名
* @param input
* 输入流
* @return 成功返回true,否则返回false
*/
public static boolean uploadFile(String url, int port, String username,
String password, String path, String filename, InputStream input)
{
boolean success = false;
FTPClient ftp = new FTPClient();

try
{
// 设置以二进制方式传输
//ftp.setFileType(FTP.BINARY_FILE_TYPE);
ftp.enterLocalPassiveMode();//设置被动模式
int reply;
ftp.connect(url, port);
// 登录
ftp.login(username, password);
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply))
{
ftp.disconnect();
return success;
}
// 找到目标路径
ftp.changeWorkingDirectory(path);
// 储藏
ftp.storeFile(filename, input);
input.close();
ftp.logout();
success = true;
}
catch (IOException e)
{
logger.error("向FTP服务器上传文件异常:", e);
}
finally
{
if (ftp.isConnected())
{
try
{
ftp.disconnect();
}
catch (IOException ioe)
{
}
}
}
return success;
}
...全文
358 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
brightyq 2012-07-18
  • 打赏
  • 举报
回复
FTPClient默认传输是ASCII模式,简单的txt文件默认的方式应该问题不大。
如果是传输其它文件,可能是编码问题,可能造成文件传输损坏,所以用二进制方式最保险。
ladybirds2008 2012-07-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
Java code

// 设置以二进制方式传输
//ftp.setFileType(FTP.BINARY_FILE_TYPE);


这个为什么要注释掉呢?不要注释掉。
[/Quote]请详细解释下呢,我传的是gz文件 二进制不是一般是用来传图片这类的吗?但是这里我真没有仔细研究过,求详细解释!
brightyq 2012-07-18
  • 打赏
  • 举报
回复
// 设置以二进制方式传输
//ftp.setFileType(FTP.BINARY_FILE_TYPE);


这个为什么要注释掉呢?不要注释掉。

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧