首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

smartupload组件(文件下传功能)

2012-09-04 
smartupload组件(文件上传功能)smartupload组件:完成上传文件功能。一般使用表单的file元素:form ??????

smartupload组件(文件上传功能)

smartupload组件:完成上传文件功能。一般使用表单的file元素:

<form >

??????上传图片:<input type="file"name="pic">

</form>

常见的上传组件:

Smartupload和Apache公司的Fileupload

上传:

完成上传功能需要smartupload组件的支持,也就是smartupload.jar文件,将他放到根目录下的WEB-INF下的lib文件夹中。

注意:开发中表单中上传文件时,表单的提交方式一定要设置成post。

图片上传(表单封装)

范例:图片上传

upload.jsp

<%@pagecontentType="text/html;charset=gb2312"%>

<html>

??????<body>

?????????????<form action="smart.jsp" method="post">

????????????????????上传图片:<input type="file"name="pic">

????????????????????<input type="submit" value="上传">

?????????????</form>

??????</body>

</html>

smart.jsp

根目录下建立一个名为upload的文件夹。用于存放上传的文件。

<%@ page language="java"import="java.util.*" pageEncoding="GBK"%>

<jsp:useBean id="smartupload"style="width: 426.1pt; padding: 0cm 5.4pt;">

<%@pagecontentType="text/html;charset=gb2312"%>

<html>

??????<body>

?????????????<form action="smart.jsp" method="post" enctype="multipart/form-data">

????????????????????上传图片:<input type="file"name="pic">

????????????????????<input type="submit" value="上传">

?????????????</form>

??????</body>

</html>

运行结果:正常上传。而且文件名称与上传前的名称一致。

表单封装后,request无法取得参数

范例:

修改upload.jsp

<%@pagecontentType="text/html;charset=gb2312"%>

<html>

??????<body>

?????????????<form action="smart.jsp" method="post">

姓名:<input type=”text”name=”name”><br>

????????????????????上传图片:<input type="file"name="pic">

????????????????????<input type="submit" value="上传">

?????????????</form>

??????</body>

</html>

修改smart.jsp

<%@ page language="java"import="java.util.*" pageEncoding="GBK"%>

<jsp:useBean id="smartupload"style="width: 426.1pt; padding: 0cm 5.4pt;">

<%@ page language="java"import="java.util.*" pageEncoding="GBK"%>

<jsp:useBean id="smartupload"style="width: 426.1pt; border-collapse: collapse; border: medium none;">

<%@ page language="java"import="java.util.*" pageEncoding="GBK"%>

<jsp:useBean id="smartupload"style="width: 426.1pt; padding: 0cm 5.4pt;">

importjava.text.SimpleDateFormat;

importjava.util.Random;

?

publicclass IPTimeStamp {

??????private String ip;

?

??????public IPTimeStamp() {

??????}

?

??????public IPTimeStamp(String ip) {

?????????????this.ip = ip; // 通过IPTimeStamp的构造方法设置ip地址

??????}

???//生成时间的方法,例如:20111201213523

??????public String getTimeStamp() {

?????????????String temp = null;

?????????????SimpleDateFormat sdf = newSimpleDateFormat("yyyyMMddHHmmssSSS");

?????????????temp = sdf.format(new java.util.Date());

?????????????return temp;

??????}

???//生成我们要求的格式的IP

??????public String getIPTimeStampRand() {

?????????????StringBuffer buf = new StringBuffer();

?????????????if (ip != null) {

????????????????????String str[] = this.ip.split("\\.");//按照“.“来拆分

????????????????????for (int i = 0; i < str.length; i++) {

???????????????????????????buf.append(this.addZero(str[i], 3));//将拆分完的并且补0之后的放入buf

????????????????????}

?????????????}

?????????????buf.append(this.getTimeStamp());//将生成好格式的时间放入buf

?????????????Random rand = new Random();

?????????????for (int i = 0; i < 3; i++) {

????????????????????buf.append(rand.nextInt(10)) ;//将生成好的随机数放入buf

?????????????}

?????????????return buf.toString() ;

??????}

???//ip被拆分后怎么补0的方法

??????private String addZero(String str, int len) {

?????????????StringBuffer s = new StringBuffer();

?????????????s.append(str);

?????????????while (s.length() < len) {

????????????????????s.insert(0, "0");

?????????????}

?????????????return s.toString();//返回生成好的文件名称

??????}

}

修改upload.jsp

<%@pagecontentType="text/html;charset=gb2312"%>

<html>

??????<body>

?????????????<form action="smart.jsp" method="post">

????????????????????上传图片:<input type="file"name="pic">

????????????????????<input type="submit" value="上传">

?????????????</form>

??????</body>

</html>

修改smart.jsp

<%@ page language="java"import="java.util.*" pageEncoding="GBK"%>

<%@ pageimport="org.lxh.util.*"%>

<jsp:useBean id="smartupload"+ name ;//将上传好的文件放到虚拟目录下的upload文件夹下

?????????????smartupload.getFiles().getFile(0).saveAs(fileName) ;

??????%>

??????<imgsrc="upload/<%=name%>" width="300"height="200">

??????</body>

</html>

上传说明

一般在系统开发中,需要将一些图片的信息保存在数据库中。一般有两种方式。

第一种:

??????直接在数据库中保存图片信息,通过BLOG字段存储。

????????如果上传文件比较大,那么这种方式不方便。

如果数据库备份时,仅仅备份数据库即可。

第二种:

?????????????直接将图片放到指定的文件夹中,然后在数据库中以普通文本的信息保存图片的路径。

?????????????如果上传文件比较大,那么这种方式方便。

?????????????如果数据库备份时,不仅得备份数据库,还有备份图片信息。

范例:保存图片路径。(第二种方式)

有如下数据库脚本(Oracle)

DROPSEQUENCE myseq ;

DROP TABLEperson ;

CREATESEQUENCE myseq ;

CREATETABLE person(

??????id??????????NUMBER????????????PRIMARY KEY NOT NULL ,

??????name?????????????VARCHAR2(60)???NOT NULL ,

??????photo????????????VARCHAR2(100)?

);

完成两个功能:1.插入信息。2.从数据库中将全部的信息列表显示。

insert.htm

<html>

??????<body>

?????????????<form action="insert.jsp" method="post"enctype="multipart/form-data">

????????????????????姓名:<inputtype="text"name="name"><br>

????????????????????上传的图片:<input type="file"name="pic"><br>

????????????????????<input type="submit" value="上传">

?????????????</form>

??????</body>

</html>

之后建立一个连接数据库类,用于连接数据库操作。

DataBaseConnection.java

importjava.sql.Connection;

importjava.sql.DriverManager;

importjava.sql.SQLException;

?

publicclass DataBaseConnection {

??????public static final String DBDRIVER ="oracle.jdbc.driver.OracleDriver" ;

??????public static final String DBURL ="jdbc:oracle:thin:@localhost:1521:MLDN" ;

??????public static final String DBUSER = "scott" ;

??????public static final String DBPASS = "tiger" ;

??????private Connection conn? = null ;

??????public DataBaseConnection(){

?????????????try {

????????????????????Class.forName(DBDRIVER) ;

????????????????????conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);

?????????????} catch (ClassNotFoundException e) {

????????????????????// TODO Auto-generated catch block

????????????????????e.printStackTrace();

?????????????} catch (SQLException e) {

????????????????????// TODO Auto-generated catch block

????????????????????e.printStackTrace();

?????????????}

??????}

??????public Connection getConnection(){

?????????????return this.conn ;

??????}

??????public void close(){

?????????????if(this.conn!=null){

????????????????????try {

???????????????????????????this.conn.close() ;

????????????????????} catch (SQLException e) {

???????????????????????????e.printStackTrace();

????????????????????}

?????????????}

??????}

}

insert.jsp

<%@ page language="java"import="java.util.*" pageEncoding="GBK"%>

<%@ pageimport="java.sql.*"%>

<%@ pageimport="org.lxh.util.*"%>

<jsp:useBean id="smartupload"+smartupload.getFiles().getFile(0).getFileExt() ;

?????????????String sql = "INSERT INTO person(id,name,photo) VALUES(myseq.nextVal,?,?)" ;

?????????????PreparedStatement pstmt = dbc.getConnection().prepareStatement(sql);

?????????????pstmt.setString(1,smartupload.getRequest().getParameter("name"));

?????????????pstmt.setString(2,photoname) ;

?????????????pstmt.executeUpdate() ;

?????????????pstmt.close() ;

?????????????String fileName = this.getServletContext().getRealPath("/") +"upload/" + photoname ;

?????????????smartupload.getFiles().getFile(0).saveAs(fileName) ;

??????}catch(Exception e){

??????}finally{

????????????dbc.close() ;

??????}

??????%>

??????</body>

</html>

显示

list.jsp

<%@ page language="java"import="java.util.*" pageEncoding="GBK"%>

<%@ pageimport="java.sql.*"%>

<%@ pageimport="org.lxh.util.*"%>

<jsp:useBean id="dbc";

?????????????PreparedStatement pstmt = dbc.getConnection().prepareStatement(sql);

?????????????ResultSet rs = pstmt.executeQuery() ;

??????%>

?????????????<center>

?????????????<table border="1"width="80%">

????????????????????<tr>

???????????????????????????<td>编号</td>

???????????????????????????<td>姓名</td>

???????????????????????????<td>照片</td>

????????????????????</tr>

?????????????<%

????????????????????while(rs.next()){

???????????????????????????int id = rs.getInt(1) ;

???????????????????????????String name = rs.getString(2) ;

???????????????????????????String photo = rs.getString(3) ;

?????????????%>

????????????????????<tr>

???????????????????????????<td><%=id%></td>

???????????????????????????<td><%=name%></td>

???????????????????????????<td><imgsrc="upload/<%=photo%>" width="30"height="25"></td>

????????????????????</tr>

?????????????<%

????????????????????}

?????????????%>

?????????????</table>

?????????????</center>

??????<%

?????????????pstmt.close() ;

??????}catch(Exception e){

??????}finally{

?????????????dbc.close() ;

??????}

??????%>

??????</body>

</html>

热点排行