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

    HashTable 散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构.也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的  速 ...

  2. struts2 最新S2-016-S2-017漏洞通杀struts2所有版本及修复方法

    详情查看http://zone.wooyun.org/content/5159 官方漏洞说明 http://struts.apache.org/release/2.3.x/docs/s2-016.ht ...

  3. 初学scala1——Option

    Scala的Option[T]是容器对于给定的类型的零个或一个元件.Option[T]可完美替代Java中的null,可以是Some[T]或者None. 例如,Scala Map的get方法输出即为O ...

  4. HTML Canvas 鼠标画图

    原文来自:http://www.williammalone.com/articles/create-html5-canvas-javascript-drawing-app(已被墙) 译文: http: ...

  5. grep:Binary file (standard input) matches

    grep "key" xxx.log时输出 Binary file xxx.log matches 百度了一下:grep觉得这是二进制文件.解决方式:grep -a. grep - ...

  6. [RxJS] Aggregating Streams With Reduce And Scan using RxJS

    What is the RxJS equivalent of Array reduce? What if I want to emit my reduced or aggregated value a ...

  7. python-gdb

    https://blog.log4d.com/2013/11/python-gdb/ https://wiki.python.org/moin/DebuggingWithGdb

  8. HTML及简单标签介绍

    什么是HTML: HTML 语言是一种超文本的标记语言,简单来讲就是构建一套标记符号和语法规则,将所要显示出来的文字.图象.声音等要素按照一定的标准要求排放,形成一定的标题.段落.列表等单元. 标签 ...

  9. [转] JavaScript中的属性:如何遍历属性

    在JavaScript中,遍历一个对象的属性往往没有在其他语言中遍历一个哈希(有些语言称为字典)的键那么简单.这主要有两个方面的原因:一个是,JavaScript中的对象通常都处在某个原型链中,它会从 ...

  10. Apple-Watch开发1

    Communicating between the iOS app and the Watch Extension There are four scenarios where an app and ...