`

O'Reilly cos上传组件的使用(3/3) - 重命名上传后的文件

阅读更多

O'Reilly cos上传组件的使用(3/3) - 重命名上传后的文件

upload.html:

<form method="post" action="cos_rename.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_rename.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"%>
<%@page import="com.oreilly.servlet.multipart.FileRenamePolicy"%>
<%@page import="java.text.SimpleDateFormat"%>

O'Reilly cos上传组件的使用(3/3) - 重命名上传后的文件<br />

<%!
/**
*文件重命名策略类:当前文件名后加上时间和日期,防上重名
*/
class MyFileRenamePolicy implements FileRenamePolicy{
public File rename(File file){
String newName = addInNameExt(file.getName() , getDateStr());
File result = new File(file.getParentFile() , newName);

return result;
}

//返回一个当前时间的字符串表示
private String getDateStr(){
String pattern ="yyyy-MM-dd_HH-mm-ss_SSS";
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
String dateStr = sdf.format(new java.util.Date());

return dateStr;
}

//分离完整文件名的文件名和后缀,并在中间加入字符串后返回
private String addInNameExt(String fullName , String add){
String name = "";//文件名
String ext = ""; //后缀
char point = '.';
int index = fullName.lastIndexOf(point);

if(index != -1){//如果有后缀
name = fullName.substring(0 , index);
ext = fullName.substring(index + 1);
}
else{
name = fullName;
}

return name + "_" + add + point + ext;
}
}
%>

<%
/*设置上传文件路径*/
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";
FileRenamePolicy rename = new MyFileRenamePolicy();

MultipartRequest multi = null;
try{
multi = new MultipartRequest(request ,
saveDir , maxPostSize , encoding , rename);
}catch(IOException e){
//上传大小超过maxPostSize就会出现IOException
out.println(e.getMessage());
return;
}
//至此文件已经上传完成!
//以下为获取上传文件的信息,并不是必需的。
%>

<br /><br />

<%
//获取文件信息
Enumeration fileNames = multi.getFileNames();
while(fileNames.hasMoreElements()){
//指表单中的name值
String name = (String)fileNames.nextElement();
String original = multi.getOriginalFileName(name);
if(original == null)continue; //只上传了一个文件时,另外的文件为null
String sysname = multi.getFilesystemName(name);
String type = multi.getContentType(name);

out.println("Request Name:" + name +"<br />");
out.println("getOriginalFileName:" + original +"<br />");
out.println("getFilesystemName:" + saveDir + sysname +"<br />");
out.println("ContentType:" + type +"<br /><br />");
}
%>
分享到:
评论

相关推荐

    Oreilly 上传组件源码

    通过对Oreilly上传组件源码的深入研究,开发者可以学习到文件上传的完整流程,以及如何在实际项目中实现高效、安全、用户体验良好的文件上传功能。这将有助于提升开发者在Web开发领域的专业技能,为构建更复杂的Web...

    Cos组件实现上传下载

    ### Cos组件实现上传下载知识点详解 #### 一、概述 在现代Web开发中,文件的上传与下载是一项基本且常用的功能。Cos组件提供了一种简便的方式来处理这些需求。本篇文章将详细阐述如何利用Cos组件实现文件的上传和...

    文件上传下载(oreilly之MultipartReques)

    上述程序中用到的jar 博文链接:https://avery-leo.iteye.com/blog/210695

    jsp里面用cos进行文件上传

    Cos(Common Object Services)组件是由O'Reilly公司开发的一个开源项目,专门用于处理文件上传操作。相比于其他商业组件或框架内置的功能,Cos的优势在于其开放源代码的特点,这使得开发者可以更自由地定制化上传...

    com.oreilly.servlet

    标题“com.oreilly.servlet”指向的是一个与Java Servlet相关的组件或库,很可能是一个由O'Reilly Media公司提供的jar包。在Java Web开发中,Servlet是用于处理HTTP请求的核心技术,它扩展了Web服务器的功能,使得...

    文件上传指南pdf

    - COS上传组件:这是O’Reilly提供的一个文件上传组件,具有高性能的文件处理能力。它支持使用Servlet或Struts Action进行文件上传。 - SmartUpload组件:这是一个较早的文件上传组件,能够处理多部分的请求,并支持...

    Android代码-oreilly_android

    This is the source code referenced in the O'Reilly Online Course: Developing Android Applications with Java. More information can be found here: http://training.oreilly.com/androidapps-java/

    Oreilly - Python Cookbook

    Oreilly - Python Cookbook,python编程人员必备学习手册

    Java.Swing.OReilly

    从提供的压缩文件列表来看,"下载说明.HTM"可能是书籍的下载和使用指南,"readme.txt"可能包含关于文件的简短说明,而"Java.Swing.OReilly"可能是书籍的电子版,可能是一个PDF文件或者其他的电子书格式。通过阅读这...

    利用 Oreilly MultiPartRequest 解決 上傳檔案 的問題

    3. **访问上传文件**:创建实例后,你可以通过文件名访问上传的文件。Oreilly MultiPartRequest提供了`getMultiFileMap()`方法,它返回一个Map,键是文件输入字段的名字,值是一个FileItem列表,代表该字段上传的...

    O-Reilly-Ionic-Video

    使用Ionic框架构建混合移动应用程序 该存储库包含在使用Ionic Framework视频构建混合移动应用程序期间构建的每个应用程序的代码。 快速设置-待办事项 npm install -g ionic git clone ...

    OReilly C++ Cookbook

    《OReilly C++ Cookbook》是由Jeff Cogswell、Christopher Diggins、Ryan Stephens和Jonathan Turkanis共同编写的,是一本针对C++编程语言的实用指南。这本书以"烹饪书"的形式,提供了大量解决实际编程问题的代码...

    Oreilly - Python Cookbook, 2nd Edition.chm

    Oreilly - Python Cookbook, 2nd Edition.chm

    up and running with nodejs

    - [http://ofps.oreilly.com/titles/9781449398583/chap_3.html](http://ofps.oreilly.com/titles/9781449398583/chap_3.html) 7. **Chapter 4: Core APIs**:详细介绍Node.js的核心API,包括事件循环、流、文件...

    fileUp.zip_jspSmartUpload

    本文将详细讲解如何使用Java实现文件上传,重点介绍标题中提到的"jspSmartUpload"以及另外两种常见的方式:O'reilly的cos组件和Apache的commons-FileUpload。 1. **O'Reilly的cos组件**: cos,全称为...

Global site tag (gtag.js) - Google Analytics