无法将UploadedFile上传到FTP服务器?

时间:2013-10-22 20:09:41

标签: java jsf upload ftp

当我尝试将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服务器
并查看文件名但是它的大小=零!!
几秒钟后,这个文件就会消失 enter image description here

1 个答案:

答案 0 :(得分:1)

问题原因
本地计算机中的Firewall正在运行

多数民众赞成为何?
因为在开发环境中 我的机器模拟为a web server(因为它运行本地服务器)
my application需要将文件写入a FTP server 因此需要特权与(FTP服务器)进行通信 防火墙仅允许与确定的连接(服务器:端口)
默认情况下,防火墙会阻止FTP连接(AnyServer:20 / AnyServer:21)

<强>解决方案
所以当我禁用防火墙时 问题已解决