您的位置:首页 > 编程语言 > Java开发

Java使用FTP上传文件被损坏的问题

2011-05-27 19:31 423 查看
原因



首先,此问题是因为FTP协议定义的数据传输方式有关,当Java FTP客户端使用ASCII传输时会发现有些上传的文件已经被损坏。



FTP协议规定了两种传输方式分别是ASCII与binary方式:

ASCII方式,这种机制指,在针对传输内容是ASCII码文本时,文件内容会被调整,有时会造成传输的文件被损坏,ASCII方式会把文件中的某些字符串位丢弃,所以不能保证文件数据的每一位都是重要的。

二进制方式,首先二进制方式保证了文件内容所有数据位都是重要的。

经过验证在传输文件类型为非文本内容的文件,使用ASCII传输方式造成copy的文件已经损坏。

示例代码(注意FTP.BINARY_FILE_TYPE/FTP.ASCII_FILE_TYPE):

/**
     * 向远程服务器上传资源
     * @param destResource 上传文件对象
     * @return {true:成功;false:失败}
     * @throws IOException IOException
     */
    public boolean uploadFile(File destResource) throws IOException {
        InputStream ins = (new FileInputStream(destResource));
        ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
        // ftpClient.setFileType(FTP.ASCII_FILE_TYPE);
        ftpClient.changeWorkingDirectory("tmp");
        boolean rtnFlag = ftpClient.storeFile(destResource.getName(), ins);
        ins.close();
        return rtnFlag;
    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: