在开发中常常需要上传文件,上传文件的方式有很多种,这里有一个cos实现的例子。

首先是要拷贝cos.jar包拷贝到WEB-INF/lib目录下,然后才进行编码。

创建一个可以进行自动重命名的Java文件FileRenameUtil.java:

  1. package org.ml.drp.util;
  2. import java.io.File;
  3. import java.util.Date;
  4. import com.oreilly.servlet.multipart.FileRenamePolicy;
  5. /**
  6. * 文件重命名
  7. * @author MuLing
  8. *
  9. */
  10. public class FileRenameUtil implements FileRenamePolicy {
  11. public File rename(File file) {
  12. String body = "";
  13. String ext = "";
  14. Date date = new Date();
  15. int pot = file.getName().lastIndexOf(".");//取得文件名和后缀分割点
  16. if (pot != -1) {//说明后缀存在
  17. body = date.getTime() + "";//采用时间的形式命名
  18. ext = file.getName().substring(pot);//截取后缀名
  19. } else {
  20. body = (new Date()).getTime() + "";
  21. ext = "";
  22. }
  23. String newName = body + ext;
  24. file = new File(file.getParent(), newName);//对文件进行重命名
  25. return file;
  26. }
  27. }

然后创建一个实现上传功能的servlet,为了方便查看上传情况,所以加入了一些输出语句。

FileUploadServlet.java

  1. package org.ml.servlet;
  2. import java.io.File;
  3. import java.io.IOException;
  4. import java.util.Enumeration;
  5. import javax.servlet.ServletException;
  6. import javax.servlet.http.HttpServlet;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;
  9. import com.oreilly.servlet.MultipartRequest;
  10. /**
  11. * 能够进行文件上传的servlet类
  12. * @author MuLing
  13. *
  14. */
  15. public class UploadServlet extends HttpServlet {
  16. private static final long serialVersionUID = 1L;
  17. public UploadServlet() {
  18. super();
  19. }
  20. public void destroy() {
  21. super.destroy();
  22. }
  23. @SuppressWarnings("unchecked")
  24. public void doGet(HttpServletRequest request, HttpServletResponse response)
  25. throws ServletException, IOException {
  26. // 存绝对路径
  27. // String filePath = "C://upload";
  28. // 存相对路径
  29. String filePath = getServletContext().getRealPath("/") + "upload";
  30. System.out.println(filePath);//输出存放上传文件所到的路径
  31. File uploadPath = new File(filePath);
  32. // 检查文件夹是否存在 不存在 创建一个
  33. if (!uploadPath.exists()) {
  34. uploadPath.mkdir();
  35. }
  36. // 文件最大容量 3M
  37. int fileMaxSize = 3 * 1024 * 1024;
  38. // 存放文件描述
  39. @SuppressWarnings("unused")
  40. String[] fileDiscription = { null, null };
  41. // 文件名
  42. String fileName = null;
  43. // 上传文件数
  44. int fileCount = 0;
  45. // 重命名策略
  46. RandomFileRenamePolicy rfrp = new RandomFileRenamePolicy();
  47. // 上传文件
  48. MultipartRequest mulit = new MultipartRequest(request, filePath,
  49. fileMaxSize, "UTF-8", rfrp);//取得上传文件
  50. String userName = mulit.getParameter("userName");
  51. System.out.println(userName);
  52. Enumeration filesname = mulit.getFileNames();//取得上传的所有文件(相当于标识)
  53. while (filesname.hasMoreElements()) {
  54. String name = (String) filesname.nextElement();//标识
  55. System.out.println(name);
  56. fileName = mulit.getFilesystemName(name); //取得文件名
  57. String contentType = mulit.getContentType(name);//工具标识取得的文件类型
  58. if (fileName != null) {
  59. fileCount++;
  60. }
  61. System.out.println("文件名:" + fileName);
  62. System.out.println("文件类型: " + contentType);
  63. }
  64. System.out.println("共上传" + fileCount + "个文件!");
  65. }
  66. public void doPost(HttpServletRequest request, HttpServletResponse response)
  67. throws ServletException, IOException {
  68. this.doGet(request, response);
  69. }
  70. public void init() throws ServletException {
  71. }
  72. }

在web.xml文件中的配置servlet如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app version="2.5"
  3. xmlns="http://java.sun.com/xml/ns/javaee"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  6. http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  7. <servlet>
  8. <servlet-name>UploadServlet</servlet-name>
  9. <servlet-class>org.ml.servlet.UploadServlet</servlet-class>
  10. </servlet>
  11. <servlet-mapping>
  12. <servlet-name>UploadServlet</servlet-name>
  13. <url-pattern>/UploadServlet</url-pattern>
  14. </servlet-mapping>
  15. <welcome-file-list>
  16. <welcome-file>index.jsp</welcome-file>
  17. </welcome-file-list>
  18. </web-app>

上传页面代码如下:

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <%
  3. String path = request.getContextPath();
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  5. %>
  6. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  7. <html>
  8. <head>
  9. </head>
  10. <body>
  11. <form enctype="multipart/form-data" method = "post" action = "UploadServlet">
  12. <input type="text" name="userName" />
  13. <p>上传文件1:<input type = "file" name = "File1" size = "20" maxlength = "20"><br></p>
  14. <p>上传文件2:<input type = "file" name = "File2" size = "20" maxlength = "20"><br></p>
  15. <p>上传文件3:<input type = "file" name = "File3" size = "20" maxlength = "20"><br></p>
  16. <p>上传文件4:<input type = "file" name = "File4" size = "20" maxlength = "20"><br></p>
  17. <input type = "submit" value = "上传">
  18. </form>
  19. </body>
  20. </html>

注明:本代码是摘抄代码,所有权归   cselmu9 所有!

摘抄--使用cos实现多个文件上传详解的更多相关文章

  1. Multipart/form-data POST文件上传详解

    Multipart/form-data POST文件上传详解 理论 简单的HTTP POST 大家通过HTTP向服务器发送POST请求提交数据,都是通过form表单提交的,代码如下: <form ...

  2. Multipart/form-data POST文件上传详解(转)

    Multipart/form-data POST文件上传详解 理论 简单的HTTP POST 大家通过HTTP向服务器发送POST请求提交数据,都是通过form表单提交的,代码如下: <form ...

  3. 【转】JSch - Java实现的SFTP(文件上传详解篇)

    JSch是Java Secure Channel的缩写.JSch是一个SSH2的纯Java实现.它允许你连接到一个SSH服务器,并且可以使用端口转发,X11转发,文件传输等,当然你也可以集成它的功能到 ...

  4. JSch - Java实现的SFTP(文件上传详解篇)

    JSch是Java Secure Channel的缩写.JSch是一个SSH2的纯Java实现.它允许你连接到一个SSH服务器,并且可以使用端口转发,X11转发,文件传输等,当然你也可以集成它的功能到 ...

  5. JSch - Java实现的SFTP(文件上传详解篇) [转载]

    文章来源:http://www.cnblogs.com/longyg/archive/2012/06/25/2556576.html JSch是Java Secure Channel的缩写.JSch是 ...

  6. JSch - Java实现的SFTP(文件上传详解篇)(转)

    JSch是Java Secure Channel的缩写.JSch是一个SSH2的纯Java实现.它允许你连接到一个SSH服务器,并且可以使用端口转发,X11转发,文件传输等,当然你也可以集成它的功能到 ...

  7. SWFUpload文件上传详解

    SWFUpload是一个flash和js相结合而成的文件上传插件,其功能非常强大. SWFUpload的特点: 1.用flash进行上传,页面无刷新,且可自定义Flash按钮的样式; 2.可以在浏览器 ...

  8. 文件上传详解 (HTML FILE)

    FileUpload 对象 在 HTML 文档中 <input type="file"> 标签每出现一次,一个 FileUpload 对象就会被创建. 该元素包含一个文 ...

  9. Java大文件上传详解及实例代码

    1,项目调研 因为需要研究下断点上传的问题.找了很久终于找到一个比较好的项目. 在GoogleCode上面,代码弄下来超级不方便,还是配置hosts才好,把代码重新上传到了github上面. http ...

随机推荐

  1. JDBCTest

    package com.atguigu.spring.jdbc; import java.sql.SQLException; import java.util.ArrayList; import ja ...

  2. 夺命雷公狗---DEDECMS----33dedecms自定义搜索以及分页功能完成

    我们现在要开始实现模版里面的搜索功能了,我们先找要做出一个检索提交表单,如下所示: 只要我们点击生成之后我们的表单就获取到了,可以直接拿生成好的html表单拿来用来测试下.. 将他嵌入首页的模版文件, ...

  3. android 三种定位方式

    http://www.cnblogs.com/oudi/archive/2012/03/22/2411509.html 最近在看android关于定位的方式,查了很多资料,也做了相关实验,在手机上做了 ...

  4. 8. 星际争霸之php设计模式--享元模式

    题记==============================================================================本php设计模式专辑来源于博客(jymo ...

  5. PHP 文件上传的综合实例

    1.upload.php <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <htm ...

  6. 锋利的JQuery(二)

    释义: DOM:Document Object Model 文档对象模型 DOM操作细分:DOM Core .HTML-DOM.CSS-DOM text():对HTML文档和XML文档都有效

  7. Vmware 10安装MAC OS X 10.9备忘

    下载准备     Vmware 10     unlock-all-v120.zip (用以支持新建MAC)     MAC OS X 10.9 VMWARE.rar 已经安装完成的MAC系统虚拟机镜 ...

  8. ubuntu apache开启重写模块

    http://www.iblue.cc/2011/09/ubuntu-apache%E5%BC%80%E5%90%AF%E9%87%8D%E5%86%99%E6%A8%A1%E5%9D%97/ Ubu ...

  9. python正则表达式之元字符介绍

    python中元字符及其含义如下: 元字符 含义 . 匹配除换行符以外的任意一个字符 ^ 匹配行首 $ 匹配行尾 ? 重复匹配0次或1次 * 重复匹配0次或更多次 + 重复匹配1次或更多次 {n,} ...

  10. JVM的classloader(转)

    Java中一共有四个类加载器,之所以叫类加载器,是程序要用到某个类的时候,要用类加载器载入内存.    这四个类加载器分别为:Bootstrap ClassLoader.Extension Class ...