摘抄--使用cos实现多个文件上传详解
在开发中常常需要上传文件,上传文件的方式有很多种,这里有一个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>
注明:本代码是摘抄代码,所有权归 cselmu9 所有!
摘抄--使用cos实现多个文件上传详解的更多相关文章
- Multipart/form-data POST文件上传详解
Multipart/form-data POST文件上传详解 理论 简单的HTTP POST 大家通过HTTP向服务器发送POST请求提交数据,都是通过form表单提交的,代码如下: <form ...
- Multipart/form-data POST文件上传详解(转)
Multipart/form-data POST文件上传详解 理论 简单的HTTP POST 大家通过HTTP向服务器发送POST请求提交数据,都是通过form表单提交的,代码如下: <form ...
- 【转】JSch - Java实现的SFTP(文件上传详解篇)
JSch是Java Secure Channel的缩写.JSch是一个SSH2的纯Java实现.它允许你连接到一个SSH服务器,并且可以使用端口转发,X11转发,文件传输等,当然你也可以集成它的功能到 ...
- JSch - Java实现的SFTP(文件上传详解篇)
JSch是Java Secure Channel的缩写.JSch是一个SSH2的纯Java实现.它允许你连接到一个SSH服务器,并且可以使用端口转发,X11转发,文件传输等,当然你也可以集成它的功能到 ...
- JSch - Java实现的SFTP(文件上传详解篇) [转载]
文章来源:http://www.cnblogs.com/longyg/archive/2012/06/25/2556576.html JSch是Java Secure Channel的缩写.JSch是 ...
- JSch - Java实现的SFTP(文件上传详解篇)(转)
JSch是Java Secure Channel的缩写.JSch是一个SSH2的纯Java实现.它允许你连接到一个SSH服务器,并且可以使用端口转发,X11转发,文件传输等,当然你也可以集成它的功能到 ...
- SWFUpload文件上传详解
SWFUpload是一个flash和js相结合而成的文件上传插件,其功能非常强大. SWFUpload的特点: 1.用flash进行上传,页面无刷新,且可自定义Flash按钮的样式; 2.可以在浏览器 ...
- 文件上传详解 (HTML FILE)
FileUpload 对象 在 HTML 文档中 <input type="file"> 标签每出现一次,一个 FileUpload 对象就会被创建. 该元素包含一个文 ...
- Java大文件上传详解及实例代码
1,项目调研 因为需要研究下断点上传的问题.找了很久终于找到一个比较好的项目. 在GoogleCode上面,代码弄下来超级不方便,还是配置hosts才好,把代码重新上传到了github上面. http ...
随机推荐
- windows下gvim与gcc的一键环境的搭建
此处略去在windows中配置gcc的方法.默认你已经能够在命令提示符下直接使用gcc了. 其实就是写了一个vimscript的.vim文件,然后在 _vimrc 中使用source命令引用进来. 以 ...
- MapReduce:详解Shuffle过程
Shuffle过程是MapReduce的核心,也被称为奇迹发生的地方.要想理解MapReduce, Shuffle是必须要了解的.我看过很多相关的资料,但每次看完都云里雾里的绕着,很难理清大致的逻辑, ...
- 《OpenGL着色语言》理解点记录三
“帧缓冲区”中的“帧”的含义? “帧”是连续图像中的一幅,3D可视化程序最终都是转化为一幅幅的图像输出在显示器上,这一幅幅的图像叫做叫“帧”. 解释“glBlendFunc(GL_SRC_AL ...
- [置顶] 1D1D动规优化初步
例题一: 货物运输,大意: 给出N个点的坐标与需要你送过去的钱数(第一个点不需要钱),身上带钱的数目有最大值,由初始在的1点,按顺序经历每个点(中途可以回1点,回去钱就满了),问最小走的路程是多少(最 ...
- VS2010 断点无效肿么办?
[1]分析原理: 1. 断点无效是因为目标文件和源文件的更新时间不一致, 编译器不认为当前的源文件是目标文件的当前版本. 2. IDE不会关心源文件的编码格式,能读入即可, 另存为Unicode或AS ...
- android 学习随笔十四(页面跳转与数据传递)
1.activity 创建第二个Activity 需要在清单文件中为其配置一个activity标签 标签中如果带有这个子节点,则会在系统中多创建一个快捷图标 <intent-filter> ...
- Intel Edison
起步: https://software.intel.com/zh-cn/node/628224 刷机: https://software.intel.com/zh-cn/flashing-firmw ...
- access数据库导入Oracle
1.对着当前的表右击->导出->选择下面的保存类型为"ODBC数据库"找一个路径输入文件名2.将x导出到x,点击->确定3.在弹出的对话框中DSN名称,点击-&g ...
- centos安装apache
查询是否已安装apache: rpm -qa httpd 安装apache: yum install httpd -y 查询: chkconfig httpd on 启动: service http ...
- Android 常用工具类之 ScreenUtil
需求: 截屏 参考 : Android开发:截屏 screenshot 功能小结 package bvb.de.openadbwireless.utils; import android.app ...