码迷,mamicode.com
首页 > 编程语言 > 详细

java web 学习笔记 - jsp用的文件上传组件 SmartUpload

时间:2017-09-26 14:56:11      阅读:237      评论:0      收藏:0      [点我收藏+]

标签:import   jsp   smart   gets   输入   void   数组   path   ++   

---恢复内容开始---

 

1. SmartUpload 

    此控件在jsp中被广泛的使用,而FileUpload控件主要是用在框架中

 

2. 如果想要使用,需要在tomcat的lib目录中,将SmartUpload的jar包拷贝进来

 

3.通过表单上传文件,由于文件动不动就是几百k, 表单的方法必须是post,不可能用get方法进行地址重写。

  另外,如果要上传文件的话,需要对表单进行封装 mutipart/form-data

技术分享

以下是smartupload_demo01.jsp

技术分享

 

表单封装之后,无法通过request内置对象来获取相应的parameter属性了,因为转换为二进制形式了。

可以用smart.getRequest().getParameter()来获取

技术分享

 

 上传图片文件是,为了避免同名覆盖问题,需要上传时自动生成一个图片名称。

 格式为 IP地址+时间戳+随机数

 以上时间戳的增加,可以写一个java类来实现。

 

package lib.liys.timestamp;
import java.text.SimpleDateFormat ;
import java.util.Date ;
import java.util.Random ;
public class IPTimeStamp{
private SimpleDateFormat sdf = null;
private String ip = null ;
public IPTimeStamp(){
}
public IPTimeStamp(String ip){
this.ip = ip ;
}

public String getIPTimeRand(){

StringBuffer buf = new StringBuffer();
if(this.ip!=null){
String s[] = this.ip.split("\\.") ; //通过split返回String 数组
for(String x:s){
buf.append(addZero(x,3));
}
}

buf.append(this.getTimeStamp()) ;

Random r = new Random() ; //3位随机的整数
for(int i=0;i<3;i++){
buf.append(r.nextInt(10)) ;
}
return buf.toString() ; //StringBuffer转换为string


}

public String getTimeStamp(){
this.sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS") ; //定义特定的时间格式
return this.sdf.format(new Date()) ; //格式化日期,返回字符串
}

private String addZero(String str,int len){
StringBuffer s = new StringBuffer() ;
s.append(str) ;
while(s.length() < len){
s.insert(0,"0") ; //buffer插入操作,从左边插入“0”字符
}
return s.toString() ; //StringBuffer转换为string
}

public static void main(String args[]){  //写一个main函数执行一下

System.out.println(new IPTimeStamp("192.168.1.1").getIPTimeRand());

}

}

 如果javac -d . *.java编译后,想执行看效果,需要输入java.lib.liys.timestamp.IPTimeStamp;

技术分享

 

 

最后写一个jsp文件

<%@page contentType="text/html" pageEncoding="GBK"%>
<%@page import = "org.lxh.smart.*"%> //jar包在tomcat下的lib目录中,需要看jar包内的目录结构
<%@page import = "lib.liys.timestamp.*"%> //导入时间戳类
<html>
<head>
<title>
SmartUpload上传表单
</title>
</head>
<body>
<% request.setCharacterEncoding("GBK"); %>
<%
SmartUpload smart = new SmartUpload();
smart.initialize(pageContext) ; // 初始化上传操作
smart.upload();
String name = smart.getRequest().getParameter("uname") ;
IPTimeStamp its = new IPTimeStamp(request.getRemoteAddr());
String ext = smart.getFiles().getFile(0).getFileExt(); //获取smart扩展名
String fileName = its.getIPTimeRand() + "." + ext ;
smart.getFiles().getFile(0).saveAs(this.getServletContext().getRealPath("/jspstudy/")+"upload"+java.io.File.separator + fileName) ; //保存文件


%>
<%=smart.getFiles().getFile(0).getFileName().matches("^\\w+.(jpg|gif)$")%>
<h2>姓名:<%=name%></h2>
<img src="../upload/<%=fileName%>">
</body>

</html>

 

如果是多个上传图片的话,则需要循环获取

技术分享

 

 

 

 

  

 

 

---恢复内容结束---

java web 学习笔记 - jsp用的文件上传组件 SmartUpload

标签:import   jsp   smart   gets   输入   void   数组   path   ++   

原文地址:http://www.cnblogs.com/lysforwin/p/7596355.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!