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):
首先,此问题是因为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; }
相关文章推荐
- Java使用FTP上传文件被损坏的问题
- jaVA使用FTP上传下载文件的问题
- jaVA使用FTP上传下载文件的问题
- JAVA使用FTP上传下载文件的问题
- 使用java向FTP上传或下载压缩文件时的问题
- 使用java程序用FTP的方式的上传文件
- 使用Commons net实现FTP上传文件(网络问题无响应解决方案)
- php使用ftp远程上传文件类(解决主从文件同步问题的简单方法)
- java实现ftp文件上传下载,解决慢,中文乱码,多个文件下载等问题
- JAVA中使用FTPClient实现文件上传下载
- java代码使用ftp上传图片失败的一个问题
- JAVA中使用FTPClient实现文件上传下载
- 解决JavaFTP上传文件假死问题
- Java中FTP文件上传下载中文文件乱码问题
- Java使用FTP上传文件
- nginx+tomcat使用apache的FtpClient上传图片时由于多线程问题导致的文件大小为0的问题
- JAVA中使用FTPClient实现文件上传下载
- java使用ftp上传文件出现false()
- java上传文件到ftp-解决中文乱码的问题
- Java实现ftp文件上传下载解决慢中文乱码多个文件下载等问题