java ftp上传

来源:互联网 发布:droid4x mac 编辑:程序博客网 时间:2024/06/08 00:37

ftp上传:主要条件是 如果没有上传的文件,那么要传一个url链接,反正是怎么传要传一个东东上去!大家懂的

  <!--这个是上传文件 --><s:file id="fdoc" name="doc" size="30" onchange="isFileType(this)"  />  <!--这个是上传url--><input type="text" name="urlName" style=" border: 1px solid #F9B2B2; color: #c20000; width: 260px;"/>

提交的时候调用struts,xml

<action name="malCodeInsertAction"class="edu.xjtu.sei.skyeye.web.malcode.MalCodeInsertAction"><!-- 上传木马的拦截器 --><interceptor-ref name="fileUpload"><param name="maximumSize">10241024000</param></interceptor-ref><interceptor-ref name="defaultStack" /><result type="redirectAction">lstMalCodeAction.action</result></action>
进入请求的action

public String execute() {try{UserInfo ui=(UserInfo) ServletActionContext.getRequest().getSession().getAttribute("userInfo");malCodeWeb.setMalwebUsernameC(ui.getTrueName());malCodeWeb.setMalwebUsertelC(ui.getUserTel());malCodeWeb.setMalwebUseremailC(ui.getUserEmail());if(null!=malTime){malCodeWeb.setMalwebsettime(Long.getLong(malTime));}else{malCodeWeb.setMalwebsettime(null);}malCodeWeb.setMalwebTimeT( new java.sql.Timestamp(new java.util.Date().getTime()));if(null!=doc){malCodeWeb.setMalwebTypeN(1);fileType=1;}else{malCodeWeb.setMalwebTypeN(2);fileType=2;}malCodeWeb.setMalwebFilenameC(docFileName==null?urlName:docFileName);malCodeWeb.setMalwebUrlC(urlName);malCodeWeb.setmalwebRemarkC(remark);long fileSize;HttpServletRequest request = ServletActionContext.getRequest (); //获取requestif(doc!=null){malCodeWeb.setMalwebMd5C(this.getMD5(doc));//对上传文件作MD5加密fileSize=doc.length();}else{//url生成文件再加密String path=request.getSession().getServletContext().getRealPath("/");urlFile=new File(path+"/pages/"+this.generateFileName());    FileWriter fw=new FileWriter(urlFile);    fw.write(urlName);    fw.close();    malCodeWeb.setMalwebMd5C("");    fileSize=urlFile.length();}//保存字节BytemalCodeWeb.setMalwebFilesizeN(fileSize);this.malCodeWebDAO.save(malCodeWeb);this.malCodeWebDAO.getHibernateTemplate().flush();String ftpFileName=null;//ftp文件上传//读取ftp用户和密码,服务器地址String xmlPath=request.getSession().getServletContext().getRealPath("/")+"/ftpPwd.xml";File f=new File(xmlPath);Map<?, ?> map=this.malCodeWebDAO.readFtpXml(f);connectServer(map.get("server").toString(), map.get("userName").toString(),   map.get("pwd").toString(),"malweb");    if(fileType==1){    //获取文件后缀名    String ftFile=docFileName.substring(docFileName.lastIndexOf("."));    //重命名    ftpFileName="malWeb_"+malCodeWeb.getMalwebIdN()+ftFile;    //exe,dll文件上传失败,删除数据库相应数据    if(upload(doc,ftpFileName).equals("false")){    this.malCodeWebDAO.delete(malCodeWeb);    request.setAttribute("msg", "系统故障,请与管理员联系!");    }else{    request.setAttribute("msg", "数据添加成功!");    }    }else{    ftpFileName="malWeb_"+malCodeWeb.getMalwebIdN()+".url";    //url文件上传失败,删除数据库相应数据    if(upload(urlFile,ftpFileName).equals("false")){    this.malCodeWebDAO.delete(malCodeWeb);    request.setAttribute("msg", "系统故障,请与管理员联系!");    }else{    request.setAttribute("msg", "数据添加成功!");    }    //删除生成的url临时文件    if(urlFile.delete()){    System.out.println(urlFile.getName()+ "文件已删除");    }    }}catch(Exception e){e.printStackTrace();}finally{//关闭ftp连接try {ftpClient.closeServer();} catch (IOException e) {e.printStackTrace();}}return SUCCESS;}

ftp连接服务器

private void connectServer(String server, String user, String password,String path) throws IOException {// server:FTP服务器的IP地址;user:登录FTP服务器的用户名// password:登录FTP服务器的用户名的口令;path:FTP服务器上的路径ftpClient = new FtpClient();ftpClient.openServer(server);ftpClient.login(user, password);//if (path.length() != 0)////ftpClient.cd("\\");//ftpClient.cd("malWeb");//用2进制上传ftpClient.binary();System.out.println(ftpClient.welcomeMsg);System.out.println("已登录到\"" + ftpClient.pwd() + "\"目录");   }

上传文件

private String upload(File file_in,String ftpFileName) throws Exception {TelnetOutputStream os = null;FileInputStream is = null;try {//用ftp上传后的新文件名os = ftpClient.put(ftpFileName);if (file_in.length()==0) {return "false";}is = new FileInputStream(file_in);byte[] bytes = new byte[1024];int c;while ((c = is.read(bytes)) != -1) {os.write(bytes, 0, c);}} catch(Exception e){e.printStackTrace();return "false";}finally {if (is != null) {is.close();}if (os != null) {os.close();}}return "success";}

修改上传文件名称格式

 private String generateFileName() { //获取当前时间,精确到秒    DateFormat format = new SimpleDateFormat("yyMMddHHmmss");       String formatDate = format.format(new Date());   //随机数    int random = new Random().nextInt(10000);      return formatDate + random + ".url";     }   
MD5加密设置

private String getMD5(File file) {  String MD5 = "";  try {   FileInputStream fos = new FileInputStream(file);   MessageDigest alga = MessageDigest.getInstance("MD5");   byte[] buffer = new byte[1024];// 设置填充大小   int read;//实际读取的字节数   while ((read = fos.read(buffer, 0, 1024)) > 0) {   alga.update(buffer, 0, read);   }   byte[] digesta = alga.digest();   for (int i = 0; i < digesta.length; i++) {    MD5 += Integer.toHexString(      (0x000000ff & digesta[i]) | 0xffffff00).substring(6);   }  } catch (Exception e1) {  e1.printStackTrace();  }  return MD5; } 



原创粉丝点击