在开发中常常需要上传文件,上传文件的方式有很多种,这里有一个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>

上面完成同时上传一个或者多个文件的操作,使用起来很方便。

cos-26上传的更多相关文章

  1. redisTemplate实现轻量级消息队列, 异步处理excel并实现腾讯云cos文件上传下载

    背景 公司项目有个需求, 前端上传excel文件, 后端读取数据.处理数据.返回错误数据, 最简单的方式同步处理, 客户端上传文件后一直阻塞等待响应, 但用户体验无疑很差, 处理数据可能十分耗时, 没 ...

  2. 腾讯云--cdn静态内容上传刷新

    一.cdn缓存刷新 当静态内容需要更新时,通常会往COS覆盖上传,不覆盖删除上传等进行更新资源或删除对象存储中的内容. 如果配置的CDN缓存过期时间较长,会导致文件更新后其他边缘节点依旧会缓存旧资源: ...

  3. JSP+Servlet中使用cos.jar进行图片上传(文件上传亦然)

    链接:JSP+Servlet中使用jspsmartupload.jar进行图片上传下载 关于cos.jar,百度百科只有这么几句话(http://baike.baidu.com/subview/406 ...

  4. 摘抄--使用cos实现多个文件上传详解

    在开发中常常需要上传文件,上传文件的方式有很多种,这里有一个cos实现的例子. 首先是要拷贝cos.jar包拷贝到WEB-INF/lib目录下,然后才进行编码. 创建一个可以进行自动重命名的Java文 ...

  5. 用COS实现文件上传

    cos是O'Rrilly公司开发的一款用于HTTP上传文件的OpenSource组件 需要cos.jar,下载地址:http://www.servlets.com/cos/ cos上传文件很简单,比f ...

  6. jsp实现文件上传(二)用cos组件实现文件上传

    jsp表单 <%@ page language="java" pageEncoding="utf-8"%> <html> <hea ...

  7. 上传大文件到腾讯云cos遇到的一些问题

    讲一个开发遇到的问题. 开发中遇到一个需求,需要在后台表单页面支持上传视频.因为项目中一直用的是腾讯云的COS做第三方存储平台,所以视频也要上传到cos中保存.首先想到的是使用腾讯提供的php的SDK ...

  8. 每天一个linux命令(26):用SecureCRT来上传和下载

    用SSH管理linux服务器时经常需要远程与本地之间交互文件.而直接用SecureCRT自带的上传下载功能无疑是最方便的,SecureCRT下的文件传输协议有ASCII.Xmodem.Zmodem.文 ...

  9. 每天一个linux命令(26):用SecureCRT来上传和下载文件

    用SSH管理linux服务器时经常需要远程与本地之间交互文件.而直接用SecureCRT自带的上传下载功能无疑是最方便的,SecureCRT下的文件传输协议有ASCII.Xmodem.Zmodem. ...

  10. java 26 - 9 网络编程之 TCP协议多用户上传文件

    TCP实现多用户上传文件: 需要同时给多用户上传文件,这样就得用多线程来实现. 实际上,这样的话,上传的先后顺序和速度就跟客户端的带宽有关:带宽够,就容易抢占到线程的执行权: 首先,创建个线程类:(这 ...

随机推荐

  1. Myeclipse 保存jsp异常Save FailedCompilation unit name must end with .java, or one of the registered Java-like extensions

    如图 解决方法:去掉jsp页面的调试断点

  2. HDU-4927 Series 1

    http://acm.hdu.edu.cn/showproblem.php?pid=4927 同学用java写的大整数相减 Series 1 Time Limit: 2000/1000 MS (Jav ...

  3. HTML5 Canvas JavaScript库 Fabric.js 使用经验

    首先,表明我的态度:采用 Flash 才是最优方案,不建议使用 HTML 5 的 Canvas 做一些生产/工业级的网页应用. Flash的优势一是浏览器支持好,二是代码成熟稳定.而HTML5 的 C ...

  4. OpenStack Havana 部署在Ubuntu 12.04 Server 【OVS+GRE】(三)——计算节点的安装

    序:OpenStack Havana 部署在Ubuntu 12.04 Server [OVS+GRE] 计算节点: 1.准备结点 安装好ubuntu 12.04 Server 64bits后,进入ro ...

  5. GitHub上整理的一些资料(转)

    技术站点 Hacker News:非常棒的针对编程的链接聚合网站 Programming reddit:同上 MSDN:微软相关的官方技术集中地,主要是文档类 infoq:企业级应用,关注软件开发领域 ...

  6. config 数据库字符串的读取、修改 分类: WebForm 2014-12-16 10:24 203人阅读 评论(0) 收藏

    config数据库字符串: <connectionStrings>   <add name="MyWebDataString" connectionString= ...

  7. Hibernate配置文件详解

    Hibernate配置方式 Hibernate给人的感受是灵活的,要达到同一个目的,我们可以使用几种不同的办法.就拿Hibernate配置来说,常用的有如下三种方式,任选其一. 在 hibernate ...

  8. ssss

    18:15 2013/6/18 未结束的事情1 应用API接口切换2 03in.com 项目管理授权 软件中不成功3 党校考核时间 段列出所有 10:51 2013/6/20 daili 应用修改1 ...

  9. 一步一步写算法(之 A*算法)

    [ 声明:版权全部,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 在前面的博客其中,事实上我们已经讨论过寻路的算法.只是,当时的演示样例图中,可选的路径是唯一的 ...

  10. 微信公众号支付流程(Node实现)

    前言 花费了一天时间,调通了微信公众号支付.作下记录,方便以后再次填坑.先声明,微信公众号支付,不同于微信H5支付,这点在本文结束时再详细说明. 微信配置 设置测试目录 在微信公众平台设置,栏目见下图 ...