0

当我尝试将UploadedFile对象内容上传到 FTP 服务器
[其值来自 [t:inputFileUpload] 组件]
我的 Web 浏览器中的加载指示器播放并且不会停止
当调试时我发现我的来冻结在一行
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服务器
并查看文件名但其大小=零!
然后几秒钟后这个文件就会消失 在此处输入图像描述

4

1 回答 1

1

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

这就是为什么 ?
因为在开发环境中
我的机器被模拟为a web server(因为那是运行本地服务器)
并且my application需要写入文件a FTP server
所以需要获得与(FTP服务器)通信的特权,
防火墙只允许与确定的(服务器:端口)
和通过的连接默认防火墙阻止 FTP 连接 (AnyServer:20 / AnyServer:21)

解决方案
所以当我禁用防火墙时
问题解决了

于 2013-10-26T18:05:06.363 回答