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

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的更多相关文章

  1. Java Web 学习(8) —— Spring MVC 之文件上传与下载

    Spring MVC 之文件上传与下载 上传文件 表单: <form action="upload" enctype="multipart/form-data&qu ...

  2. 《Play for Java》学习笔记(六)文件上传file upload

    一. Play中标准方法 使用表单form和multipart/form-data的content-type类型. 1.Form @form(action = routes.Application.u ...

  3. Java Web使用Html5 FormData实现多文件上传

    前一阵子,迭代一个线上的项目,其中有一个图片上传的功能,之前用的ajaxfileupload.js来实现上传的,不过由于ajaxfileupload.js,默认是单文件上传(虽然可以通过修改源码的方法 ...

  4. Asp.net core 学习笔记 ( upload/download files 文件上传与下载 )

    更新 :  2018-01-22  之前漏掉了一个 image 优化, 就是 progressive jpg refer : http://techslides.com/demos/progressi ...

  5. Django学习笔记之Ajax与文件上传

      Ajax简介 AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”.即使用Javascript语言与服务器进行异步交互,传输 ...

  6. Nodejs学习笔记(5) 文件上传系统实例

    目录 2018.8.4更新:  MySQL可以存放几乎任何类型的数据(图片.文档.压缩包等),但这不是最好的解决方案,正常情况下都是在数据库中存放文件路径,图片.音乐.视频.压缩包.文档等文件存放在硬 ...

  7. java web学习笔记-jsp篇

    1.java web简介 1.1静态页面与动态页面   表现形式 所需技术 静态网页 网页内容固定,不会更新 html,css 动态网页 网页内容由程序动态显示,自动更新 html,css,DB,ja ...

  8. java web 学习笔记 - JSP标签编程

    1.JSP标签编程简介 标签编程在开发中并不常见,主要是为了更好的理解struts等框架的标签而打基础,完善相关知识体系. 标签编程分为: 一个继承自TagSupport的标签类,一个在WEB-INF ...

  9. JMeter学习笔记(五) 文件上传接口测试

    此次测试的是上传图片接口,我把测试情况整理了一下,其他的上传文件接口都类似. 1.我通过jmeter的录制功能获取到了接口地址以及相关参数,如果有接口文档就会方便很多,此步骤就不多做说明了 2.因为上 ...

随机推荐

  1. 关于ping以及TTL的分析

    首先介绍一下ping这个工具 ping [目标] 的意思就是向目标发送几个数据包,之后假设目标接受到一个数据包.那么目标就会向发送ping的主机返回一个数据包 比方上图.我ping了百度的server ...

  2. 操作系统——IO管理

    一.IO系统结构 在计算机系统中.cpu要和很多外设进行交互.比方鼠标,键盘,网卡等等. 1.IO是怎样协调工作的那? (1)对于设备来说,其有两部分组成,一部分是机械部分,还有一部分是电子控制部分. ...

  3. C++之new和malloc差别

         在C++程序猿面试中.非常easy被问到new 和 malloc的差别.偶尔在quora上逛.看到Robert Love的总结.才发现自己仅仅知道里面的一两项就沾沾自喜,从来没有像这位大牛一 ...

  4. 跨域CORS原理及调用详细演示样例

      上篇博客介绍了JSONP原理,其不足,就是仅仅能使用GET提交.若传输的数据量大.这个JSONP方式就歇菜了.那这篇博客就来介绍还有一种跨域介绍方案-CORS.   相对JSONP,CORS支持P ...

  5. HDU-4643-GSM(DFS)

    Problem Description Xiao Ming is traveling around several cities by train. And the time on the train ...

  6. asp.net forms认证

    工作中遇到的asp.net项目使用forms认证.以前虽然用过,但其原理并不了解,现在甚至对什么是form认证也完全不知道了.对一样东西如果不清楚其原理,不知其所以然,那么死记硬背是无济于事的. as ...

  7. Codeforces Round #324 (Div. 2)D. Dima and Lisa 数学(素数)

                                                     D. Dima and Lisa Dima loves representing an odd num ...

  8. sql 查询如何将结果集 输出为一段字符串?

    文件id集合 文件表. SELECT CONCAT('2323',(SELECT 'dsfsd'),'232323'); SELECT CONCAT('2323',(SELECT file_ids F ...

  9. YTU 2506: 切面条

    2506: 切面条 时间限制: 1 Sec  内存限制: 128 MB 提交: 382  解决: 223 题目描述 一根高筋拉面,中间切一刀,可以得到2根面条.      如果先对折1次,中间切一刀, ...

  10. Chapter 4 Syntax Analysis

    Chapter 4 Syntax Analysis This chapter is devoted to parsing methods that are typically used in comp ...