三沣开发知识 购物 网址 游戏 小说 股票 美女 租车 短信 新闻 笑话 | 开发 汉字 下载 软件 图书馆 图片
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题
autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程 CSS/HTML/Xhtml
html5 CSS XML/XSLT Dreamweaver教程 经验交流 开发者乐园 Android开发资料
站长资讯 .NET新手 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA VisualStudio ASP.NET-MVC .NET控件开发 EntityFramework WinRT-Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动 Html-Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP OracleERP DynamicsCRM K2 BPM 信息安全 企业信息 Android开发 iOS开发 WindowsPhone WindowsMobile 其他手机 敏捷开发 项目管理 软件工程 SQLServer Oracle MySQL NoSQL 其它数据库 Windows7 WindowsServer Linux
  IT知识库 -> Java -> 用COS实现文件上传 -> 正文阅读
 

[Java]用COS实现文件上传

用COS实现文件上传 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>

启动上传:

服务端:

还是很给力的。
  Java 最新文章
Java基础——Servlet(四)
Jsp制作验证码
eclipse安装及运行环境配置
Hibernate基础案例1
转:深入浅出Java垃圾回收机制
list的4种遍历方式
Thrift 跨服务开发框架
ContextLoaderListener作用详解(转)
java properties
Java Security:公钥私钥、数字签名、消息摘
上一篇文章      下一篇文章      查看所有文章
加:2017-08-11 23:28:08  更:2017-08-11 23:28:37 
 
技术频道: 站长资讯 .NET新手区 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA Visual Studio ASP.NET MVC .NET控件开发 Entity Framework WinRT/Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动设计 Html/Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP Oracle ERP Dynamics CRM K2 BPM 信息安全 企业信息化其他 Android开发 iOS开发 Windows Phone Windows Mobile 其他手机开发 敏捷开发 项目与团队管理 软件工程其他 SQL Server Oracle MySQL NoSQL 其它数据库 Windows 7 Windows Server Linux
脚本语言: vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题 autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程
网站开发: CSS/HTML/Xhtml html5 CSS XML/XSLT Dreamweaver教程 经验交流 开发者乐园 Android开发资料
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 美食菜谱 新闻资讯 电影视频 小游戏 Chinese Culture 股票 租车
生肖星座 三丰软件 视频 开发 短信 Android开发 站长 古典小说 网文精选 搜图网 美图 中国文化英文版 多播 租车 短信 看图
2017-8-21 14:16:05
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT知识库