为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

FTP上传

2017-08-31 14页 doc 36KB 25阅读

用户头像

is_769254

暂无简介

举报
FTP上传FTP上传 jsp中使用两个包: commons-fileupload-1.2.1.jar,commons-io-1.3.jar实现文件上传以及文件下载 2010-08-10 08:42:05| 分类: 编程技巧 | 标签: |字号大中小 订阅 对于上传我们需要导入两个包:commons-fileupload-1.2.1.jar,commons-io-1.4.jar FileUploadServlet.java(文件上传) import java.io.File; import java.io.IOExceptio...
FTP上传
FTP上传 jsp中使用两个包: commons-fileupload-1.2.1.jar,commons-io-1.3.jar实现文件上传以及文件下载 2010-08-10 08:42:05| 分类: 编程技巧 | 标签: |字号大中小 订阅 对于上传我们需要导入两个包:commons-fileupload-1.2.1.jar,commons-io-1.4.jar FileUploadServlet.java(文件上传) import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.util.Iterator; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletReq st; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.FileUploadBase.SizeLimitExceededException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; //import xby.szu.factory.*;///////插入数据库,这里视你们的情况而定 //import xby.szu.javaBean.*;/////插入数据库,这里视你们的情况而定 p lic class FileUploadServlet extends HttpServlet { p lic void doGet(HttpServletReq st req st, HttpServletResponse response) throws ServletException, IOException { final long MAX_SIZE = 1024 * 1024 * 1024;// 设置上传文件最大值 // 允许上传的文件格式的列 final String[] allowedExt = new String[] { "txt","rar","exe","docx","vsd" }; response.setContentType("text/html"); // 设置字符编码为UTF-8, 统一编码,处理出现乱码问题 response.setCharacterEncoding("UTF-8"); // 实例化一个硬盘文件工厂,用来配置上传组件ServletFileUpload DiskFileItemFactory dfif = new DiskFileItemFactory(); dfif.setSizeThreshold(4096);// 设置上传文件时用于临时存放文件的内存大小,这里是4K.多于的部分将临时存在硬盘 dfif.setRepository(new File(req st.getRealPath("/") + "Lupload"));// 设置存放临时文件的 // , // web根目录下的ImagesUploadTemp目录 // 用以上工厂实例化上传组件 ServletFileUpload sfu = new ServletFileUpload(dfif); // 设置最大上传大小 sfu.setSizeMax(MAX_SIZE); PrintWriter out = response.getWriter(); // 从req st得到所有上传域的列表 List fileList = null; try { fileList = sfu.parseReq st(req st); } catch (FileUploadException e) {// 处理文件尺寸过大异常 if (e instanceof SizeLimitExceededException) { out.println("文件尺寸超过规定大小:" + MAX_SIZE + "字节

"); out.println("返回"); return; } e.printStackTrace(); } // 没有文件上传 if (fileList == null || fileList.size() == 0) { out.println("请选择上传文件

"); out.println("返回"); return; } // 得到所有上传的文件 Iterator fileItr = fileList.iterator(); // 循环处理所有文件 while (fileItr.hasNext()) {///////////////////////////////////////////// // ////////////////// FileItem fileItem = null; String path = null; long size = 0; // 得到当前文件 fileItem = (FileItem) fileItr.next(); // 忽略简单form字段而不是上传域的文件域(等) if (fileItem == null || fileItem.isFormField()) { contin ; } // 得到文件的完整路径 path = fileItem.getName(); // 得到文件的大小 size = fileItem.getSize(); if ("".eq ls(path) || size == 0) { out.println("请选择上传文件

"); out.println("返回"); return; } // 得到去除路径的文件名 String t_name = path.s string(path.lastIndexOf("\\") + 1); System.out.println(t_name); // 得到文件的扩展名(无扩展名时将得到全名) String t_ext = t_name.s string(t_name.lastIndexOf(".") + 1); // 拒绝接受规定文件格式之外的文件类型 int allowFlag = 0; int allowedExtCount = allowedExt.length; for (; allowFlag < allowedExtCount; allowFlag++) { if (allowedExt[allowFlag].eq ls(t_ext)) break; } if (allowFlag == allowedExtCount) { out.println("请上传以下类型的文件

"); for (allowFlag = 0; allowFlag < allowedExtCount; allowFlag++) out.println("*." + allowedExt[allowFlag] + " "); out.println("

返回"); return; } long now = System.currentTimeMillis(); // 根据系统时间生成上传后保存的文件名 String prefix = String.val Of(now); // 保存的最终文件完整路径,保存在web根目录下的upload目录下 String u_name = req st.getRealPath("/") + "Lupload/" + prefix+ "." + t_ext; System.out.println(now); // 根据原文件名保存文件 String filename = t_name; //根据时间设定的新文件名 String filenowName = prefix +filename; String tempFileName=""; //获取当前时间 String nowTime=GetIdTime.getTime(); String filepath="E:\\tomcat 6.x\\apache-tomcat-6.0.26\\webapps\\XBY\\upload\\"; try { // 保存文件到E:\\tomcat 6.x\\apache-tomcat-6.0.26\\webapps\\XBY\\upload\\目录下 fileItem.write(new File(filepath+ filename)); //插入数据库 // DAOFactory.getBookDAOInstance().insert(filename, filenowName, nowTime, filepath);//这里视你们的情况而 //插入数据库 System.out.println(filename); out.println(filename+"文件上传成功. 已保存为: " + t_name + " 文件大小: " + size+ "字节

"); //改名操作,避免同名文件上传后被覆盖 tempFileName=filepath+filename; java.io.File newfile=new java.io.File(tempFileName); ///// newfile.renameTo(new java.io.File(filepath+filenowName)); //改名操作 out.println("继续上传"); } catch (Exception e) { e.printStackTrace(); } } } p lic void doPost(HttpServletReq st req st, HttpServletResponse response) throws ServletException, IOException { this.doGet(req st, response); } } ------------------------------------------------------------------------------------------------------------------------------------------ -------------------------- 下载文件的servlet与上面的两个包无关 FileDownloadServlet.java(下载文件) import java.io.IOException; import java.net.URLEncoder; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletReq st; import javax.servlet.http.HttpServletResponse; /** * 下载文件 * @author * */ p lic class FileDownloadServlet extends HttpServlet { /** * */ private static final long serialVersionUID = 8594448765428224944L; p lic void doGet(HttpServletReq st req st, HttpServletResponse response) throws ServletException, IOException { this.doPost(req st, response); } /* * 处理请求 * (non-Javadoc) * @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletReq st, javax.servlet.http.HttpServletResponse) */ p lic void doPost(HttpServletReq st req st, HttpServletResponse response) throws ServletException, IOException { //if(req st.getSession().getAttribute("loginusername")!=null){//我的文件下载功能要求注册用户才能下载,所以加了 这个条件,去掉也行 req st.setCharacterEncoding("gb2312"); String name = new String(req st.getParameter("filenowName").getBytes("iso-8859-1"),"gb2312");//这里你们可以根据你们自己所需的//参数自定,我传的是文件的新名字这个参数 System.out.println("dddddddddd:" + name);//测试查看中文会不会乱码 // web绝对路径 String path = req st.getSession().getServletContext().getRealPath("/"); String savePath = path + "upload";//你们自己定义路径吧 // 设置为下载application/x-download response.setContentType("application/x-download"); // 即将下载的文件在服务器上的绝对路径 String filenamedownload = savePath + "/" + name; // 下载文件时显示的文件保存名称 String filenamedisplay = name; // 中文编码转换 filenamedisplay = URLEncoder.encode(filenamedisplay, "gb2312"); response.addHeader("Content-Disposition", "attachment;filename=" + filenamedisplay); try { java.io.OutputStream os = response.getOutputStream(); java.io.FileInputStream fis = new java.io.FileInputStream( filenamedownload); byte[] b = new byte[1024]; int i = 0; while ((i = fis.read(b)) > 0) { os.write(b, 0, i); } fis.close(); os.flush(); os.close(); } catch (Exception e) { } /* }else{ response.sendRedirect(req st.getContextPath()+"/downerror.jsp"); }*/ } } uploadBook.jsp(文件上传界面) <%@ page lang ge="java" import="java.util.*" pageEncoding="gb2312"%>

书籍名称1:
书籍名称2:
书籍名称3:
书籍名称4:
书籍名称4:
Book.jsp下载界面部分代码 <% List booklist=DAOFactory.getBookDAOInstance().selectAll(); int d=1; for(int i=0;i <% d++; } %>
序号书籍名称(点击下载)上传时间
序号书籍名称(点击下载)上传时间
<%=d%> <%=book.getBookrelName() %> <%=book.getBooksendTime() %>
/
本文档为【FTP上传】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索