java代码上传图片到FTP服务器——图像“ftp://****/images/**.jpg"因存在错误而无法显示

来源:互联网 发布:java简历项目描述 编辑:程序博客网 时间:2024/04/29 04:24

项目中要求使用Nginx和ftp服务器来存储照片。其中ftp是用来存储照片的,而Nginx服务器来访问其中的照片。通过FileZilla工具来上传图片到服务器是很顺利的。但是通过java代码测试上传的图片一直显示:图像”ftp://****/images/**.jpg"因存在错误而无法显示。就是通过Linux指令(eog **.jpg)来查看也不行。

java代码如下所示:

import java.io.File;import java.io.FileInputStream;import org.apache.commons.net.ftp.FTP;import org.apache.commons.net.ftp.FTPClient;import org.junit.Test;//测试FTP的类public class FTPTest {@Testpublic void testFtpClient() throws Exception{//创建一个FTPClient对象FTPClient ftpClient = new FTPClient();//创建FTP连接,端口号可以设定,我的是22,默认是21ftpClient.connect("192.168.**.**",21);//登录FTP服务器,使用用户名和密码ftpClient.login("****", "****");//ftpClient.enterRemotePassiveMode();//ftpClient.setControlEncoding("gb18030");//上传文件,读取本地文件String path = "D:\\NetBuyProject\\Netbuy\\images\\defaultImgs\\9.jpg";FileInputStream inputStream = new FileInputStream(new File(path));//设置上传的路径String pathname = "/home/ftpuser/images";//这个路径就是FTP服务端存储的路径,可以从FileZilla中获取ftpClient.changeWorkingDirectory(pathname);//参数一:服务器端文档名;参数二:上传文档的inputStreamString remote = "11cui00.jpg";ftpClient.storeFile(remote, inputStream);//关闭连接ftpClient.logout();}}
这样测试一直都不通过,同时也改过访问模式,主动和被动都不行,文件编码方式也改过,都不好。

无意间想到了传输图片的格式采用二进制形式,加了如下一句话,就可以了:

ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
完整的ftp上传图片的代码如下:

import java.io.File;import java.io.FileInputStream;import org.apache.commons.net.ftp.FTP;import org.apache.commons.net.ftp.FTPClient;import org.junit.Test;//测试FTP的类public class FTPTest {@Testpublic void testFtpClient() throws Exception{//创建一个FTPClient对象FTPClient ftpClient = new FTPClient();//创建FTP连接,端口号可以设定,我的是22,默认是21ftpClient.connect("192.168.**.**",21);//登录FTP服务器,使用用户名和密码ftpClient.login("****", "****");//上传文件,读取本地文件String path = "D:\\NetBuyProject\\Netbuy\\images\\defaultImgs\\9.jpg";FileInputStream inputStream = new FileInputStream(new File(path));ftpClient.setFileType(FTP.BINARY_FILE_TYPE);//************此处是重点要不就服务器的图像就被损坏//设置上传的路径String pathname = "/home/ftpuser/images";//这个路径就是FTP服务端存储的路径,可以从FileZilla中获取ftpClient.changeWorkingDirectory(pathname);//参数一:服务器端文档名;参数二:上传文档的inputStreamString remote = "11cui00.jpg";ftpClient.storeFile(remote, inputStream);//关闭连接ftpClient.logout();}}

0 0
原创粉丝点击