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; }
- ftp上传程序(JAVA)
- ftp上传(java)
- java实现ftp上传
- FTP java 上传 下载
- Java FTP上传
- FTP java 上传 下载
- Java ftp 文件上传
- java 实现ftp上传
- java ftp 上传源码
- java ftp上传
- Java ftp 上传文件
- android/java ftp上传
- java上传FTP
- ftp 文件上传 java
- java Ftp文件上传
- Java FTP上传文件
- java ftp文件上传
- java之ftp上传
- java的hashCode方法和equals方法
- 程序员必知8大排序3大查找(三)
- ASP.NET开发中主要的字符验证方法-JS验证、正则表达式、验证控件、后台验证
- Delphi 文件的读取(1)
- android右键没有Run Application
- java ftp上传
- TCP --recv函数相关
- 第十二周作业4
- LFS(2)
- 第3章 PL/SQL基础 笔记
- java设计模式(原型模式)
- java 对象 转换成字节数组发送给服务器,根据服务器返回的字节数组自动组装成java对象。
- 两数组用最少次数查出相同元素
- 梦入IBM之java基础第九天