cos是O'Rrilly公司开发的一款用于HTTP上传文件的OpenSource组件

需要cos.jar,下载地址:http://www.servlets.com/cos/

cos上传文件很简单,比fileupload还简单:但是上传最大我试了试,是800多兆,超过直接崩溃:

java.io.IOException: Posted content length of 1627105576 exceeds limit of 889192448 --->byte,800多M

只需一个servelt即可:

package com.lhy.upload;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.Enumeration;
import java.util.UUID; import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import com.oreilly.servlet.MultipartRequest;
import com.oreilly.servlet.multipart.FileRenamePolicy; /**
* CosServlet
* 在Cos中就一个类,
* MultipartRequest它是request的包装类。
*/
@WebServlet(name="CosServlet",urlPatterns="/CosServlet")
public class CosServlet extends HttpServlet{ @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//第一步,声明文件的保存目录
String path = getServletContext().getRealPath("/up");
//第二步:文件上传
//声明文件重新命名策略,默认的不行不能重命名,自己实现FileRenamePolicy接口
// FileRenamePolicy rename = new DefaultFileRenamePolicy();
MultipartRequest multiReq = new MultipartRequest(req, path, 1024*1024*100, "UTF-8",new MyRename()); //输出所上传的文件的信息
Enumeration fileNames = multiReq.getFileNames();
while(fileNames.hasMoreElements()){
String name = (String)fileNames.nextElement();
File file = multiReq.getFile(name);//得到上传的文件
if(null != file){
String fileName = multiReq.getFilesystemName(name); //取得文件名
String contentType = multiReq.getContentType(name);//类型
System.out.println("上传的文件: " +fileName+", 文件类型: "+contentType);
}
} //输出所提交的表单中其它文本输入域的值
Enumeration formValue = multiReq.getParameterNames();
while(formValue.hasMoreElements()){
String param = (String)formValue.nextElement();
String value = multiReq.getParameter(param);
System.out.println(value);
} //第三步:如果知道input的name,还可以直接获取信息,
/*resp.setContentType("text/html;charset=UTf-8");
PrintWriter out = resp.getWriter();
out.print("文件名称1:"+multiReq.getOriginalFileName("img1"));
out.print("<br/>新名称:"+multiReq.getFilesystemName("img1"));
out.print("<br/>类型1:"+multiReq.getContentType("img1"));
out.print("<br/>大小1:"+multiReq.getFile("img1").length());
out.print("<br/>说明:"+multiReq.getParameter("desc1"));
if(multiReq.getContentType("img1").contains("image/")){
out.print("<img width='300px' height='200px' src='"+req.getContextPath()+"/up/"+multiReq.getFilesystemName("img1")+"'></img>");
} out.print("<hr/>");
out.print("文件名称2:"+multiReq.getOriginalFileName("img2"));
out.print("<br/>类型2:"+multiReq.getContentType("img2"));
out.print("<br/>大小2:"+multiReq.getFile("img2").length());
out.print("<br/>说明2:"+multiReq.getParameter("desc2")); //
out.print("<hr/>");
out.print("文件名称3:"+multiReq.getOriginalFileName("img3"));
out.print("<br/>类型3:"+multiReq.getContentType("img3"));
out.print("<br/>大小3:"+multiReq.getFile("img3").length());
out.print("<br/>说明3:"+multiReq.getParameter("desc3"));*/ } } /**
* 重命名策略,
*/
class MyRename implements FileRenamePolicy{ @Override
public File rename(File file) {
String fileName = file.getName();
String extName = fileName.substring(fileName.lastIndexOf("."));
String uuid = UUID.randomUUID().toString().replace("-","");
String newName = uuid+extName;//abc.jpg
file = new File(file.getParent(),newName);
return file;
} }

表单:

<form action="<c:url value='/CosServlet'/>" method="post"
enctype="multipart/form-data">
File1:<input type="file" name="img1"><br /> 说明1:
<input type="text" name="desc1"><br /> File2:<input type="file" name="img2"><br/>
说明2:<input type="text" name="desc2"><br/>
File3:<input type="file" name="img3"><br/>
说明3:<input type="text" name="desc3"><br/> <input type="submit" />
</form>

启动上传:

服务端:

还是很给力的。

用COS实现文件上传的更多相关文章

  1. cos实现文件上传--推荐

    1.导包 2.核心类:MultipartRequest MultipartRequest是request的包装类 参数1:request 参数2:保存路径 参数3:上传文件大小,默认为1M 参数4:编 ...

  2. Struts2文件上传下载

    Struts2文件上传 Struts2提供 FileUpload拦截器,用于解析 multipart/form-data 编码格式请求,解析上传文件的内容,fileUpload拦截器 默认在defau ...

  3. 【Struts2】文件上传与下载

    一.上传 1.1 Struts2实现步骤 浏览器端 服务器端 1.2 关于Struts2中文件上传细节: 1.3 示例 jsp文件 Action类 struts.xml文件配置 二.下载 2.1 文件 ...

  4. Struts2之文件上传与下载

    时间:2017-1-11 15:47 --使用commons-fileupload组件上传1.客户端    *   method="post"    *   <input t ...

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

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

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

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

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

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

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

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

  9. 解决COS、FileUpload上传文件时中文文件名乱码问题

    方法: MultipartParser mp = new MultipartParser(request, 10*1024*1024); mp.setEncoding("GBK") ...

随机推荐

  1. dj cookie & session组件

    Cookie概述 什么叫Cookie Cookie翻译成中文是小甜点,小饼干的意思.在HTTP中它表示服务器送给客户端浏览器的小甜点.其实Cookie是key-value结构,类似于一个python中 ...

  2. b2_trsd_EDSD_new

    # -*- coding:utf-8 -*- import re ss="./data/" year = '17A' filename = ss+'EDSD%s.txt'%year ...

  3. 20155212 2016-2017-2 《Java程序设计》第7周学习总结

    20155212 2016-2017-2 <Java程序设计>第7周学习总结 教材学习内容总结 Chapter13 取得系统时间的方法之一是System.currentTimeMillis ...

  4. Hi,everybod,搬家了

    Hi,小伙伴们,我的博客已经搬家到了GitHub,地址是:http://wxb.github.io/Blog/ 博客园以后就不维护了,有什么问题咱们GitHub上讨论啦,可以在:https://git ...

  5. Spark应用程序的运行架构几种说

    (1)简单的说: 由driver向集群申请资源,集群分配资源,启动executor.driver将spark应用程序的代码和文件传送给executor.executor上运行task,运行完之后将结果 ...

  6. How To Change the Supplier Bank Account Masking in UI (Doc ID 877074.1)

      Give Feedback...           How To Change the Supplier Bank Account Masking in UI (Doc ID 877074.1) ...

  7. Python中通过open()操作文件时的文件中文名乱码问题

    最近在用Python进行文件操作的时候,遇到创建中文文件名的乱码问题. Python默认是不支持中文的,一般我们在程序的开头加上#-*-coding:utf-8-*-来解决这个问题,但是在我用open ...

  8. 提高Android和iOS调试编译速度

    http://www.cnblogs.com/findumars/p/7841252.html 提高Android和iOS调试编译速度   如果您使用Delphi开发App,就会遇到:Android和 ...

  9. 【加密算法】MD5

    一.简介 MD5的全称是Message-Digest Algorithm 5(信息摘要算法),在90年代初由MIT Laboratory for Computer Science和RSA Data S ...

  10. T-SQL判断是否存在表、临时表

    利用SQL SERVER的系统函数 object_id() 可以判断是否存在表.临时表, object_id() 的作用是返回架构范围内对象的数据库对象标识.(即返回系统视图  sys.objects ...