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

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. NYOJ 55 懒省事的小明(哈弗曼树)

    懒省事的小明 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描写叙述       小明非常想吃果子,正好果园果子熟了. 在果园里,小明已经将全部的果子打了下来,并且按果子的不 ...

  2. android:省市县三级联动(基于json和spring)

    一.请看效果图": 二.程序的代码: 1.MainActivity.java package com.loveplusplus.loader.demo.ui; import org.json ...

  3. JAVA进阶-网络编程

    >通过套接字连接server Socket指代套接字 >读取随意站点的首页 --------- /** * @author Lean @date:2014-10-9 */ public c ...

  4. Kernel Live-patching (by quqi99)

    作者:张华  发表于:2016-02-27 版权声明:能够随意转载.转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 ( http://blog.csdn.net/quqi99 ) GC ...

  5. ios7 UIBarButtonItem 默认蓝色

    [self.navigationItem setLeftBarButtonItem:leftButton]; 这样设置在ios7上button默认是蓝色 解决方法: leftButton.tintCo ...

  6. struts <s:iterator>两个list嵌套循环,对象属性交叉使用

    两个list:List<CreateTableColumn> createTableColumnList,List<Map<String, Object>> tab ...

  7. 操作系统学习笔记:CPU调度

    CPU调度的目的在于提高CPU利用率,不让CPU闲着.CPU是宝贵的资源,如果有一个进程,本来在CPU中运行,忽然因为要使用IO资源,于是转而请求IO,这边CPU挂起,造成就绪队列中的其他进程等待,这 ...

  8. luogu 2622 关灯问题II

    题目大意: 有一些灯,有些开关可以控制这些灯,给出矩阵表示控制 对于矩阵中的a i j 表示第i个开关控制第j个灯的情况 若元素为1 表示当灯开着的时候,关掉灯 若元素为0 表示无操作 若元素为-1 ...

  9. CPU开销sql server 性能调优

    sql server 性能调优 CPU开销分析 一. 概述 上次在介绍性能调优中讲到了I/O的开销查看及维护,这次介绍CPU的开销及维护, 在调优方面是可以从多个维度去发现问题如I/O,CPU, 内存 ...

  10. [APIO2018]Circle selection

    https://www.zybuluo.com/ysner/note/1257597 题面 在平面上,有\(n\)个圆,记为\(c_1,c_2,...,c_n\).我们尝试对这些圆运行这个算法: 找到 ...