-
问题描述
使用ftpClient上传图片时,上传成功,但文件的大小却为零,不能打开,使用浏览器访问时出现404找不到资源的错误 -
问题原因
一、FTP文件目录空间达到上限
二、网络策略变更造成,被防火墙拦截 -
解决方案
FTP协议有两种工作方式:
1.PORT方式
2.PASV方式
默认为PORT方式,修改为PASV方式,目前问题解决。 -
实现代码
-
`package com.taotao.controller;
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;
public class FTPTest {
@Test
public void testFtpClient() throws Exception{
//创建ftpClient对象
FTPClient ftpClient=new FTPClient();
//创建一个ftp连接
ftpClient.connect(“192.168.85.130”, 21);
//使用用户名和密码登录ftp
ftpClient.login(“ftpuser”, “ftpuser”);
//上传文件
//读取本地文件
FileInputStream fileInputStream=new FileInputStream(new File(“e:\image\w5.jpg”));
//设置上传路径
ftpClient.changeWorkingDirectory("/home/ftpuser/www/images");
//修改上传文件的格式
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
//修改ftp工作方式为PASV方式
ftpClient.enterLocalPassiveMode();
//第一个参数:服务器端文档名
//第二个参数:上传文档的inputStream
ftpClient.storeFile(“hello.jpg”, fileInputStream);
//关闭连接
ftpClient.logout();
}
}
`