Java Web上传组件使用:Cos

比较了一下比较常用的JavaWeb上传组件。这里介绍的是Cos。网上也有很多它的介绍,总之只有经过自己用过才能知道它好不好。

一、JSP页面如下:

Html代码
  1. <body>
  2.         <form method="POST" action="CosUploadServlet" ENCTYPE="multipart/form-data">
  3.             <table>
  4.                 <tr><td><input type="text" name="subject" /></td></tr>
  5.                 <tr><td><input type="file" name="file1"/></td></tr>
  6.                 <tr><td><input type="file" name="file2"/></td></tr>
  7.                 <tr><td><input type="file" name="file3"/></td></tr>
  8.                 <tr><td><input type="submit" value="上传"/></td></tr>
  9.             </table>
  10.         </form>
  11.         <br/>
  12.         <a href="CosDownloadServlet">下载</a>
  13.     </body>

 

二、上传的Servlet如下:

Java代码
  1. /**
  2.  * 使用cos组件实现文件上传
  3.  *
  4.  * @author [email protected]
  5.  *
  6.  */
  7. public class CosUploadServlet extends HttpServlet {
  8.     private static final long serialVersionUID = -9116026245071140150L;
  9.     public void doPost(HttpServletRequest request, HttpServletResponse response)
  10.             throws ServletException, IOException {
  11.         File fileDir = new File(this.getServletContext()
  12.                 .getRealPath("/FileDir"));
  13.         if (!fileDir.exists()) {
  14.             fileDir.mkdirs();
  15.         }
  16.         // 设置上传文件的大小,超过这个大小 将抛出IOException异常,默认大小是1M。
  17.         int inmaxPostSize = 10 * 1024 * 1024;
  18.         MultipartRequest multirequest = null;
  19.         // 上传文件重命名策略
  20.         RenamePolicyCos myRenamePolicyCos = new RenamePolicyCos();
  21.         try {
  22.             // MultipartRequest()有8种构造函数!
  23.             multirequest = new MultipartRequest(request, fileDir
  24.                     .getAbsolutePath(), inmaxPostSize, "GBK", myRenamePolicyCos); // GBK中文编码模式上传文件
  25.             String subject = multirequest.getParameter("subject");// 获取普通信息
  26.             System.out.println(subject);
  27.             Enumeration<String> filedFileNames = multirequest.getFileNames();
  28.             String filedName = null;
  29.             if (null != filedFileNames) {
  30.                 while (filedFileNames.hasMoreElements()) {
  31.                     filedName = filedFileNames.nextElement();// 文件文本框的名称
  32.                     // 获取该文件框中上传的文件,即对应到上传到服务器中的文件
  33.                     File uploadFile = multirequest.getFile(filedName);
  34.                     if (null != uploadFile && uploadFile.length() > 0) {
  35.                         System.out.println(uploadFile.getName());
  36.                         System.out.println(uploadFile.getPath());
  37.                         System.out.println(uploadFile.length());
  38.                     }
  39.                     // 获取未重命名的文件名称
  40.                     String Originalname = multirequest
  41.                             .getOriginalFileName(filedName);
  42.                     System.out.println(Originalname);
  43.                 }
  44.             }
  45.         } catch (Exception e) {
  46.             e.printStackTrace();
  47.         }
  48.     }
  49.     public void doGet(HttpServletRequest request, HttpServletResponse response)
  50.             throws ServletException, IOException {
  51.         this.doPost(request, response);
  52.     }
  53. }

 

 

Java代码
  1. /**
  2.  * 文件命名策略
  3.  *
  4.  * @author [email protected]
  5.  * @date 2010-10-29
  6.  */
  7. public class RenamePolicyCos implements FileRenamePolicy {
  8.     public File rename(File uploadFile) {
  9.         String newName = getNewFileName(uploadFile.getName());
  10.         File renameFile = new File(uploadFile.getParent(), newName);
  11.         return renameFile;
  12.     }
  13.     private String getNewFileName(String fileName) {
  14.         StringBuffer newName = new StringBuffer();
  15.         if (null != fileName && !"".equals(fileName)) {
  16.             String type = "";
  17.             String name = "";
  18.             if (fileName.indexOf(".") != -1) {
  19.                 type = fileName.substring(fileName.indexOf("."));
  20.                 name = fileName.substring(0, fileName.indexOf("."));
  21.             }else{
  22.                 name = fileName;
  23.             }
  24.             newName.append(name);
  25.             newName.append(getSuffix());
  26.             newName.append(type);
  27.         }
  28.         return newName.toString();
  29.     }
  30.     private String getSuffix(){
  31.         StringBuffer suffix = new StringBuffer("_");
  32.         String now = new SimpleDateFormat("yyyy_MM_dd_hh_mm_ss").format(new Date());
  33.         suffix.append(now);
  34.         suffix.append("_");
  35.         Random random = new Random();
  36.         String randomValue = String.valueOf(random.nextInt(1000));
  37.         suffix.append(randomValue);
  38.         return suffix.toString();
  39.     }
  40. //  public static void main(String[] args) {
  41. //      RenamePolicyCos my = new RenamePolicyCos();
  42. //      System.out.println(my.getNewFileName("log.txt"));
  43. //  }
  44. }

三、下载的Servlet如下:

 

 

 

Java代码
  1. /**
  2.  * 使用cos组件实现文件下载
  3.  *
  4.  * @author [email protected]
  5.  * @date 2010-10-29
  6.  */
  7. public class CosDownloadServlet extends HttpServlet {
  8.     public void doGet(HttpServletRequest request, HttpServletResponse response)
  9.             throws ServletException, IOException {
  10.         this.doPost(request, response);
  11.     }
  12.     public void doPost(HttpServletRequest request, HttpServletResponse response)
  13.             throws ServletException, IOException {
  14.         String filePath = "D:\\Tomcat\\apache-tomcat-6.0.26\\webapps\\CosUpload\\FileDir\\";
  15.         String fileName = "2010年10月安排_2010_10_29_04_52_06_178.txt";
  16.         String Originalname = "2010年10月安排.txt";
  17.         String isofilename = new String(Originalname.getBytes("gb2312"),
  18.                 "ISO8859-1");
  19.         response.setContentType("application/octet-stream");
  20.         response.setHeader("Content-Disposition", "attachment; filename="
  21.                 + isofilename);
  22.         ServletOutputStream out = null;
  23.         try {
  24.             out = response.getOutputStream();
  25.             ServletUtils.returnFile(filePath + fileName, out);
  26.         } catch (Exception e) {
  27.             e.printStackTrace();
  28.         } finally {
  29.             if (null != out) {
  30.                 out.close();
  31.             }
  32.         }
  33.     }
  34. }

关于Servlet配置如下:

Xml代码
  1. <servlet>
  2.         <servlet-name>CosUploadServlet</servlet-name>
  3.         <servlet-class>com.mengya.servlet.CosUploadServlet</servlet-class>
  4.     </servlet>
  5.     <servlet>
  6.         <servlet-name>CosDownloadServlet</servlet-name>
  7.         <servlet-class>com.mengya.servlet.CosDownloadServlet</servlet-class>
  8.     </servlet>
  9.     <servlet-mapping>
  10.         <servlet-name>CosUploadServlet</servlet-name>
  11.         <url-pattern>/CosUploadServlet</url-pattern>
  12.     </servlet-mapping>
  13.     <servlet-mapping>
  14.         <servlet-name>CosDownloadServlet</servlet-name>
  15.         <url-pattern>/CosDownloadServlet</url-pattern>
  16.     </servlet-mapping>

 

关于上传和下载需要完善的地方还有很多, 这里只是介绍了如何使用它的一些功能。

源码和jar包可以在下面下载

  • cos.jar (55.8 KB)
  • 描述: cos包
  • 下载次数: 49

原文链接:http://zmx.iteye.com/blog/803190


» 本文链接:https://blog.java-zone.org/archives/692.html
» 转载请注明来源:Java地带  » 《Java Web上传组件使用:Cos》

» 本文章为Java地带整理创作,欢迎转载!转载请注明本文地址,谢谢!
» 部分内容收集整理自网络,如有侵权请联系我删除!

» 订阅本站:https://blog.java-zone.org/feed/

标签: COS上传组件, Java上传组件

添加新评论