摘抄--使用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 ...
随机推荐
- EBS fnd_global.apps_initialize
原型:fnd_global.apps_initialize(user_ID, Responsibility_id ...
- python pdb
pdb 以参数-m pdb启动后,pdb定位到下一步要执行的代码-> s = '0'.输入命令l来查看代码: 输入命令n可以单步执行代码: 任何时候都可以输入命令p 变量名来查看变量: (Pdb ...
- ASP.NET MVC(二)
休息一下还是继续ASP.NET MVC 的基础知识. 这篇文件我想和大家一起熟悉下ASP.NET MVC项目的目录结构及dll. 1. ASP.NET MVC 项目的目录结构 App_Data: 存 ...
- Oracle体系结构总览(整理)
先让我们来看一张图 这张就是Oracle 9i的架构全图.看上去,很繁杂.是的,是这样的.现在让我们来梳理一下:一.数据库.表空间.数据文件1.数据库数据库是数据集合.Oracle是一种数据库管理系 ...
- [置顶] lua 进阶3--lua文件中调用C++函数
前面讲了一下,C++读取lua文件中的变量,包括一维表.二维表这些,这节讲一下如何在lua文件中去调用C++函数 C++代码如下 #include <stdio.h> extern &qu ...
- 删除项目中的.svn文件
删除项目中的.svn文件 1.创建个文件,名字改为kill-svn-folders.reg 2.把下面的代码考进去,每一行前面不要留空, Windows Registry Editor Version ...
- android 学习随笔二十八(应用小知识点小结 )
去掉标题栏的方法 第一种:也一般入门的时候经常使用的一种方法requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏注意这句一定要写在setConte ...
- 161025、java提高篇之关键字static
一. static代表着什么 在Java中并不存在全局变量的概念,但是我们可以通过static来实现一个"伪全局"的概念,在Java中static表示"全局"或 ...
- jQuery上传插件,文件上传测试用例
jQuery上传插件,文件上传测试用例 jQuery File Upload-jQuery上传插件介绍http://www.jq22.com/jquery-info230 jQuery File Up ...
- NDK
Android NDK是Google提供的开发Android原生程序的工具包,很多软件和病毒采用基于Android NDK动态库的调用技术,隐藏了在实现上的很多细节. 一.(windows版) 下载地 ...