cos-26上传
在开发中常常需要上传文件,上传文件的方式有很多种,这里有一个cos实现的例子。
首先是要拷贝cos.jar包拷贝到WEB-INF/lib目录下,然后才进行编码。
创建一个可以进行自动重命名的Java文件FileRenameUtil.java:
- package org.ml.drp.util;
- import java.io.File;
- import java.util.Date;
- import com.oreilly.servlet.multipart.FileRenamePolicy;
- /**
- * 文件重命名
- * @author MuLing
- *
- */
- public class FileRenameUtil implements FileRenamePolicy {
- public File rename(File file) {
- String body = "";
- String ext = "";
- Date date = new Date();
- int pot = file.getName().lastIndexOf(".");//取得文件名和后缀分割点
- if (pot != -1) {//说明后缀存在
- body = date.getTime() + "";//采用时间的形式命名
- ext = file.getName().substring(pot);//截取后缀名
- } else {
- body = (new Date()).getTime() + "";
- ext = "";
- }
- String newName = body + ext;
- file = new File(file.getParent(), newName);//对文件进行重命名
- return file;
- }
- }
然后创建一个实现上传功能的servlet,为了方便查看上传情况,所以加入了一些输出语句。
FileUploadServlet.java
- package org.ml.servlet;
- import java.io.File;
- import java.io.IOException;
- import java.util.Enumeration;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import com.oreilly.servlet.MultipartRequest;
- /**
- * 能够进行文件上传的servlet类
- * @author MuLing
- *
- */
- public class UploadServlet extends HttpServlet {
- private static final long serialVersionUID = 1L;
- public UploadServlet() {
- super();
- }
- public void destroy() {
- super.destroy();
- }
- @SuppressWarnings("unchecked")
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- // 存绝对路径
- // String filePath = "C://upload";
- // 存相对路径
- String filePath = getServletContext().getRealPath("/") + "upload";
- System.out.println(filePath);//输出存放上传文件所到的路径
- File uploadPath = new File(filePath);
- // 检查文件夹是否存在 不存在 创建一个
- if (!uploadPath.exists()) {
- uploadPath.mkdir();
- }
- // 文件最大容量 3M
- int fileMaxSize = 3 * 1024 * 1024;
- // 存放文件描述
- @SuppressWarnings("unused")
- String[] fileDiscription = { null, null };
- // 文件名
- String fileName = null;
- // 上传文件数
- int fileCount = 0;
- // 重命名策略
- RandomFileRenamePolicy rfrp = new RandomFileRenamePolicy();
- // 上传文件
- MultipartRequest mulit = new MultipartRequest(request, filePath,
- fileMaxSize, "UTF-8", rfrp);//取得上传文件
- String userName = mulit.getParameter("userName");
- System.out.println(userName);
- Enumeration filesname = mulit.getFileNames();//取得上传的所有文件(相当于标识)
- while (filesname.hasMoreElements()) {
- String name = (String) filesname.nextElement();//标识
- System.out.println(name);
- fileName = mulit.getFilesystemName(name); //取得文件名
- String contentType = mulit.getContentType(name);//工具标识取得的文件类型
- if (fileName != null) {
- fileCount++;
- }
- System.out.println("文件名:" + fileName);
- System.out.println("文件类型: " + contentType);
- }
- System.out.println("共上传" + fileCount + "个文件!");
- }
- public void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- this.doGet(request, response);
- }
- public void init() throws ServletException {
- }
- }
在web.xml文件中的配置servlet如下:
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app version="2.5"
- xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
- <servlet>
- <servlet-name>UploadServlet</servlet-name>
- <servlet-class>org.ml.servlet.UploadServlet</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>UploadServlet</servlet-name>
- <url-pattern>/UploadServlet</url-pattern>
- </servlet-mapping>
- <welcome-file-list>
- <welcome-file>index.jsp</welcome-file>
- </welcome-file-list>
- </web-app>
上传页面代码如下:
- <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
- <%
- String path = request.getContextPath();
- String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
- %>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- </head>
- <body>
- <form enctype="multipart/form-data" method = "post" action = "UploadServlet">
- <input type="text" name="userName" />
- <p>上传文件1:<input type = "file" name = "File1" size = "20" maxlength = "20"><br></p>
- <p>上传文件2:<input type = "file" name = "File2" size = "20" maxlength = "20"><br></p>
- <p>上传文件3:<input type = "file" name = "File3" size = "20" maxlength = "20"><br></p>
- <p>上传文件4:<input type = "file" name = "File4" size = "20" maxlength = "20"><br></p>
- <input type = "submit" value = "上传">
- </form>
- </body>
- </html>
上面完成同时上传一个或者多个文件的操作,使用起来很方便。
cos-26上传的更多相关文章
- redisTemplate实现轻量级消息队列, 异步处理excel并实现腾讯云cos文件上传下载
背景 公司项目有个需求, 前端上传excel文件, 后端读取数据.处理数据.返回错误数据, 最简单的方式同步处理, 客户端上传文件后一直阻塞等待响应, 但用户体验无疑很差, 处理数据可能十分耗时, 没 ...
- 腾讯云--cdn静态内容上传刷新
一.cdn缓存刷新 当静态内容需要更新时,通常会往COS覆盖上传,不覆盖删除上传等进行更新资源或删除对象存储中的内容. 如果配置的CDN缓存过期时间较长,会导致文件更新后其他边缘节点依旧会缓存旧资源: ...
- JSP+Servlet中使用cos.jar进行图片上传(文件上传亦然)
链接:JSP+Servlet中使用jspsmartupload.jar进行图片上传下载 关于cos.jar,百度百科只有这么几句话(http://baike.baidu.com/subview/406 ...
- 摘抄--使用cos实现多个文件上传详解
在开发中常常需要上传文件,上传文件的方式有很多种,这里有一个cos实现的例子. 首先是要拷贝cos.jar包拷贝到WEB-INF/lib目录下,然后才进行编码. 创建一个可以进行自动重命名的Java文 ...
- 用COS实现文件上传
cos是O'Rrilly公司开发的一款用于HTTP上传文件的OpenSource组件 需要cos.jar,下载地址:http://www.servlets.com/cos/ cos上传文件很简单,比f ...
- jsp实现文件上传(二)用cos组件实现文件上传
jsp表单 <%@ page language="java" pageEncoding="utf-8"%> <html> <hea ...
- 上传大文件到腾讯云cos遇到的一些问题
讲一个开发遇到的问题. 开发中遇到一个需求,需要在后台表单页面支持上传视频.因为项目中一直用的是腾讯云的COS做第三方存储平台,所以视频也要上传到cos中保存.首先想到的是使用腾讯提供的php的SDK ...
- 每天一个linux命令(26):用SecureCRT来上传和下载
用SSH管理linux服务器时经常需要远程与本地之间交互文件.而直接用SecureCRT自带的上传下载功能无疑是最方便的,SecureCRT下的文件传输协议有ASCII.Xmodem.Zmodem.文 ...
- 每天一个linux命令(26):用SecureCRT来上传和下载文件
用SSH管理linux服务器时经常需要远程与本地之间交互文件.而直接用SecureCRT自带的上传下载功能无疑是最方便的,SecureCRT下的文件传输协议有ASCII.Xmodem.Zmodem. ...
- java 26 - 9 网络编程之 TCP协议多用户上传文件
TCP实现多用户上传文件: 需要同时给多用户上传文件,这样就得用多线程来实现. 实际上,这样的话,上传的先后顺序和速度就跟客户端的带宽有关:带宽够,就容易抢占到线程的执行权: 首先,创建个线程类:(这 ...
随机推荐
- 提高效率 常用的几个xcode快捷键
能用好快捷键,不仅仅可以提高工作效率,而且让你看起来更加的自信和能干,下面几个常用的快捷键,希望对你在工作中有帮助 1.首先说明一下几个标示的意思 Command ⌘ Control ⌃ ...
- 320. Generalized Abbreviation
首先想到的是DFS,对于每个单词的字母都遍历,比如 spy: 1py,s1y,sp1 然后每个遍历完的单词再DFS..左右有数字就合并比如 1py: 11y=>2py, 1p1 这样.. 但是单 ...
- oracle从客户端到sql语句追踪
这两天看小布老师的视频学习了一下从客户端到oracle数据库发送执行的SQL语句的跟踪,整理一下笔记. 需要用到的命令:netstat oracle端要用到的四个视图为: V$session:当前有多 ...
- SQL 存储过程 通过多个ID更新数据 分类: SQL Server 2014-12-08 16:08 299人阅读 评论(0) 收藏
下面举个例子说明: 我想让一部分品牌的名称(即Brand_Name)后面加上1,Brand_ID是主键,sql语句很容易实现,但是存储过程如何写呢? 错误写法如下: //*************** ...
- Isim你不得不知道的技巧(整理)
来源:电子产品世界: 注:本文由本人多出整理所得,原文章图片不清晰,自己整理配图后重新发表 安装好ISE,系统已经自带了ISim仿真软件,相比于专业的仿真软件Modelsim,ISim是免费的,不用编 ...
- C# 之 System.Object
System.Object C#中全部的类都直接或间接继承自System.Object类,这使得C#中的类得以单根继承.假设我们没有明白指定继承类,编译器缺省觉得该类继承自System.Obj ...
- Qt 学习之路:坐标系统
在经历过实际操作,以及前面一节中我们见到的那个translate()函数之后,我们可以详细了解下 Qt 的坐标系统了.泛泛而谈坐标系统,有时候会觉得枯燥无味,难以理解,好在现在我们已经有了基础. 坐标 ...
- 怎样写好一份IT技术岗位的简历
10月是校园招聘的旺季,很多应届毕业生都忙碌起来了,从CSDN笔试-面试文章的火热程度,从我收到的简历就看得出来. 我很久没有参与笔试和面试了,所以只能从“简历”来阐述下我的看法. 截至目前,已经帮8 ...
- 将MVC中的Controllers、Model和View分别放到单独的项目中
Model: 新建-项目-Windows-类库 MVCTest.Model Controller:新建-项目-Windows-控制台应用程序 MVCTest.Bussiness Views:新建-项目 ...
- Andoird - SQLite 数据库 基础教程
链接来源 http://www.tutorialspoint.com/android/android_sqlite_database.htm SQLite是一个开源的SQL数据库,这个数据库把数据存储 ...