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

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 类贴出来

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题