紫夜清风 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 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥30 python代码,帮调试,帮帮忙吧