O'Reilly cos上传组件的使用(2/3) - 获取文件信息
upload.html:
<form method="post" action="cos.jsp"
enctype="multipart/form-data">
文件1:<input type="file" name="file1" />
说明:<input type="text" name="file1_desc" />
<br />
文件2:<input type="file" name="file2" />
说明:<input type="text" name="file2_desc" />
<input type="submit" value="上传" />
</form>
cos.jsp:
<%@page contentType="text/html;charset=GBK"%>
<%@page import="com.oreilly.servlet.MultipartRequest"%>
<%@page import="java.io.File,javax.servlet.ServletContext"%>
<%@page import="java.util.Enumeration,java.io.IOException"%>
O'Reilly cos上传组件的使用(2/3) - 获取文件信息<br />
<%
/*设置上传文件路径*/
ServletContext context = getServletContext();
String realPath = context.getRealPath("/");
String saveDir = realPath + "ch9\\fileupload\\upload\\";
//out.println(saveDir + "<br />");//输出实际路径
File dir = new File(saveDir);
if(!dir.exists())
dir.mkdirs();
int maxPostSize = 1*1024*1024;//1MB
String encoding = "GBK";
MultipartRequest multi = null;
try{
multi = new MultipartRequest(request ,
saveDir , maxPostSize , encoding);
}catch(IOException e){
//上传大小超过maxPostSize就会出现IOException
out.println(e.getMessage());
return;
}
//至此文件已经上传完成!
//以下为获取上传文件的信息,并不是必需的。
%>
<%
//获取文件信息
Enumeration fileNames = multi.getFileNames();
while(fileNames.hasMoreElements()){
//指表单中的name值
String name = (String)fileNames.nextElement();
String sysname = multi.getFilesystemName(name);
String type = multi.getContentType(name);
out.println("Request Name:" + name +"<br />");
out.println("getFilesystemName:" +
saveDir + sysname +"<br />");
out.println("ContentType:" + type +"<br /><br />");
}
out.println("==========<br />");
%>
<%
//获取文件描述
Enumeration params = multi.getParameterNames();
while(params.hasMoreElements()){
String param = (String)params.nextElement();
String value = multi.getParameter(param);
out.println("Param Name:" + param +"<br />");
out.println("Param Value:" + value +"<br /><br />");
}
out.println("==========<br />");
%>
<%
//将前面两个组合起来:获取文件及文件描述
//<input type="file" name="file1" />
//<input type="text" name="file1_desc" />
String descExt = "_desc";
Enumeration files = multi.getFileNames();
while(files.hasMoreElements()){
String name = (String)files.nextElement();
String sysname = multi.getFilesystemName(name);
String type = multi.getContentType(name);
String desc = multi.getParameter(name + descExt);
out.println("Request Name:" + name +"<br />");
out.println("getFilesystemName:" +
saveDir + sysname +"<br />");
out.println("ContentType:" + type +"<br />");
out.println("Description:" + desc + "<br /><br />");
}
%>
分享到:
相关推荐
本文详细介绍了如何使用Cos组件实现文件的上传和下载功能。通过合理的表单配置、文件处理逻辑以及定制化的重命名策略,可以有效确保文件上传过程的安全性和稳定性。同时,对于文件下载,通过简单的链接创建和响应头...
本文将重点介绍如何使用Cos组件来实现文件上传功能。 #### Cos组件简介 Cos(Common Object Services)组件是由O'Reilly公司开发的一个开源项目,专门用于处理文件上传操作。相比于其他商业组件或框架内置的功能,...
- COS上传组件:这是O’Reilly提供的一个文件上传组件,具有高性能的文件处理能力。它支持使用Servlet或Struts Action进行文件上传。 - SmartUpload组件:这是一个较早的文件上传组件,能够处理多部分的请求,并支持...
2. **二进制流处理**:当使用`multipart/form-data`时,服务器端通过解析HTTP请求体中的二进制流来获取文件内容,进而实现文件的上传。 #### Java领域的文件上传框架 在Java领域,实现文件上传功能的常用框架有两...
在Java领域内,有多个成熟且广泛应用的文件上传工具,其中最知名的两个是Apache的Commons FileUpload组件和Oreilly的COS框架。 - **Apache Commons FileUpload**:这是一个高度可配置、易于使用的文件上传解决方案...
首先,`cos.jar`是关键组件,它包含`com.oreilly.servlet.multipartRequest`类,这个类是用于处理HTTP多部分请求的。多部分请求是文件上传的标准协议,根据RFC 2388定义,它允许在一个HTTP请求中传输多个数据部分,...
- **COS**:由O'Reilly组织开发,相比Common-FileUpload更为便捷,提供了更简单的API接口进行文件上传操作。 #### 实验步骤详解 1. **项目创建**:首先,在MyEclipse中新建一个名为“Struts2FileUpload”的Web项目...
首先,`cos`是`com.oreilly.servlet`库的简称,这是一个用于处理HTTP请求和响应的Java库,特别是对于文件上传和下载非常有用。在JavaMail的上下文中,cos主要用作SMTP(简单邮件传输协议)的客户端,帮助开发者通过...