当前位置: 代码迷 >> J2EE >> 求解'Apache的FTPClient下传.gz文件解压失败'
  详细解决方案

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

热度:55   发布时间:2016-04-22 00:37:06.0
求解'Apache的FTPClient上传.gz文件解压失败'
用'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

Java code
/**     * 向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;    }


------解决方案--------------------
Java code
// 设置以二进制方式传输//ftp.setFileType(FTP.BINARY_FILE_TYPE);
------解决方案--------------------
FTPClient默认传输是ASCII模式,简单的txt文件默认的方式应该问题不大。
如果是传输其它文件,可能是编码问题,可能造成文件传输损坏,所以用二进制方式最保险。
  相关解决方案