在开发中常常需要上传文件,上传文件的方式有很多种,这里有一个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. Junit单元测试-环境配置

    JUnit是Java单元测试框架,已经在Eclipse中默认安装.目前主流的有JUnit3和JUnit4.JUnit3中,测试用例需要继承TestCase类.JUnit4中,测试用例无需继承TestC ...

  2. 【兄弟连ThinkPHP】1、介绍和安装

    琢磨了好几天的ThinkPHP了,兄弟连的视频真心不错,下面是记得一些要点,只做备忘,有兴趣的朋友请去百度兄弟连. ## ThinkPHP 3 介绍及安装#讲师:赵桐正微博:http://weibo. ...

  3. jQuery触发<a>标签的点击事件后URL不跳转的解决办法

    有HTML代码如下: <a id="workFrame" href="pages/work.html" target="FrameBox&quo ...

  4. tmpfs

    什么是tmpfs tmpfs是Linux/Unix系统上的一种基于内存的文件系统.tmpfs可以使用您的内存或swap分区来存储文件.由此可见,temfs主要存储暂存的文件. linux内核中的VM子 ...

  5. Android 常用工具类之 ScreenUtil

    需求: 截屏 参考 :    Android开发:截屏 screenshot 功能小结 package bvb.de.openadbwireless.utils; import android.app ...

  6. jenkins+jmeter+ant搭建接口测试平台

    接口测试的重点是检查数据的交换,传递和控制管理过程以及系统间的相互逻辑依赖关系. 接口测试的流程 项目启动后,测试人员要尽早拿到接口测试文档. 开始编写接口测试用例 将接口测试用例部署到持续集成的测试 ...

  7. Hibernate,JPA注解@SecondaryTable

    使用类一级的 @SecondaryTable或@SecondaryTables注解可以实现单个实体到多个表的映射. 使用 @Column或者 @JoinColumn注解中的table参数可指定某个列所 ...

  8. JavaEE基础(二)

    1.Java语言基础(常量的概述和使用) A:什么是常量 在程序执行的过程中其值不可以发生改变 B:Java中常量的分类 字面值常量 自定义常量(面向对象部分讲) C:字面值常量的分类 字符串常量 用 ...

  9. C#:实现托盘(任务栏图标与托盘图标互斥)

    实现托盘(任务栏图标与托盘图标互斥),并且在点击任务栏图标时实现的最小化与点击最小化按钮分离. 具体如下: 1.向窗体上添加如下控件:MenuStrip menuStrip1, NotifyIcon ...

  10. Android实现推送方式解决方案(转)

    本文介绍在Android中实现推送方式的基础知识及相关解决方案.推送功能在手机开发中应用的场景是越来起来了,不说别的,就我们手机上的新闻客户端就时不j时的推送过来新的消息,很方便的阅读最新的新闻信息. ...