当我尝试将UploadedFile
对象内容上传到FTP服务器时
[它的值来自[t:inputFileUpload]组件]
我的网络浏览器中的加载指示器播放并且不会停止
调试时我发现我的线路冻结了
ftp.storeFile(destFilePath, inputStream);
但是,我尝试3种方法(在代码中显示)上传
但仍然所有方法都不起作用
UploadedFile到FTPServer的控制器方法
public static String uploadFileToFTPServer
(String ftpServerIP, String userName, String password,UploadedFile uploadedFile) {
String destFilePath = null;
FTPClient ftp = new FTPClient();
ftp.addProtocolCommandListener(new PrintCommandListener(
new PrintWriter(System.out)));
try {
// Method 1
byte[] fileBytesContent = uploadedFile.getBytes();
ByteArrayInputStream inputStream = new ByteArrayInputStream(fileBytesContent);
// Method 2
// InputStream inputStream = uploadedFile.getInputStream();
// Method 3
// InputStream inputStreamContent = uploadedFile.getInputStream();
// BufferedInputStream inputStream = new BufferedInputStream(inputStreamContent);
destFilePath = uploadedFile.getName() ;
// ftp server
ftp.connect(ftpServerIP);
ftp.login(userName, password);
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
ftp.setFileTransferMode(FTPClient.BINARY_FILE_TYPE);
ftp.storeFile(destFilePath, inputStream);
inputStream.close();
ftp.logout();
} catch (Exception e) {
destFilePath = null;
e.printStackTrace();
} finally {
try {
ftp.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
return destFilePath;
}
请注意
冻结时我检查我的FTP服务器
并查看文件名但是它的大小=零!!
几秒钟后,这个文件就会消失
答案 0 :(得分:1)
问题原因
本地计算机中的Firewall
正在运行
多数民众赞成为何?
因为在开发环境中
我的机器模拟为a web server
(因为它运行本地服务器)
my application
需要将文件写入a FTP server
因此需要特权与(FTP服务器)进行通信
防火墙仅允许与确定的连接(服务器:端口)
默认情况下,防火墙会阻止FTP连接(AnyServer:20 / AnyServer:21)
<强>解决方案强>
所以当我禁用防火墙时
问题已解决