紫夜清风 2017-07-26 08:48 采纳率: 0%
浏览 2992

FTP下载文件损坏,求大神解答?

这个方法在我本机中的配置,下载可以,没有任何问题,部署在公司的测试环境中
下载文件就会损坏
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    String filename = request.getParameter("filename"); 
    String fileNameNew=request.getParameter("fileNameNew"); 

// String fileNameNe = URLEncoder.encode(fileNameN, "UTF-8");
// String fileNameN=URLDecoder.decode(fileNameNe, "UTF-8");
// fileNameN= new String(
// fileNameN.getBytes("ISO-8859-1"),
// "UTF-8");
// String fileNameNew = fileNameN.replaceAll(" ", "");

    InputStream inputStream=this.getClass().getClassLoader().getResourceAsStream("ftp.properties");    
    Properties prot=new  Properties();    
    prot.load(inputStream);  
    String hostName=prot.getProperty("ftp.ip");
    String remoteDir=prot.getProperty("ftp.updir");
    String userName=prot.getProperty("ftp.username");
    String Pwd=prot.getProperty("ftp.pwd");
    String prt=prot.getProperty("ftp.port");
    // 初始表示下载失败  
    int port=Integer.parseInt(prt);

    // 创建FTPClient对象  
    FTPClient ftp = new FTPClient();  
    try {  
        int reply;  
        // 连接FTP服务器  
        // 如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器  
        ftp.connect(hostName, port);  
        reply = ftp.getReplyCode();  
        /* 
         * 判断是否连接成功 
         */  
        if (!FTPReply.isPositiveCompletion(reply)) {  
            ftp.disconnect();  

        } else{      
            // 登录ftp  
            if (filename!=null && !filename.equals("")) {
                if(ftp.login(userName, Pwd)){  
                    // 转到指定下载目录  
                    ftp.changeWorkingDirectory(remoteDir);  
                    // 列出该目录下所有文件  
                    FTPFile[] fs = ftp.listFiles();  
                    // 遍历所有文件,找到指定的文件 
                    for (FTPFile ff : fs) {  
                        if (ff.getName().equals(filename)) {  
                            // 根据绝对路径初始化文件  

                            String name=new String(fileNameNew);
                            response.setHeader("Content-Disposition","attachment; filename="+name);
                            // 输出流  


                            OutputStream is = response.getOutputStream();  
                            response.setContentType("application/octet-stream");
                            // 下载文件  
                            boolean success = ftp.retrieveFile(filename, is);  
                            System.out.println(success);
                            is.flush();
                            is.close();  
                        }  
                    }  
                    // 退出ftp  
                    ftp.logout();  
                    // 下载成功  
                } 
            }
        }  
    } catch (IOException e) {  
        e.printStackTrace();  
    } finally {  
        if (ftp.isConnected()) {  
            try {  
                ftp.disconnect();  
            } catch (IOException ioe) {  
            }  
        }  
    }  
}  
  • 写回答

3条回答 默认 最新

  • wuzhiping2017 2017-07-29 00:09
    关注

    FTPclient 类贴出来

    评论

报告相同问题?

悬赏问题

  • ¥15 MATLAB yalmip 可转移负荷的简单建模出错,如何解决?
  • ¥15 数学的三元一次方程求解
  • ¥20 iqoo11 如何下载安装工程模式
  • ¥15 本题的答案是不是有问题
  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?