用jsp 如何将上传的文件、图片等信息直接存储到sql数据库中?? 我是jsp的初学者,不知道各位有没有什么好的办法可以实现?大家探讨探讨,分数不是问题,只要问题能够解决!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 使用JSP/Servlet上载文件 使用 JSP/ Servlet上载文件正成为一项常用的任务。以下是一个简单的例程,使用了jspsmart的一个免费的组件。你可以在JSPSMART站点进行下载。 1. Html File <html> <body> <script LANGUAGE="javascript" SRC="JSFunction.js"> </script> <script language="JavaScript"> <!-- function checkForm(){ if (document.uploadform.adsImage.value==""){ alert("You must choose what image file to upload!"); return false; } document.uploadform.submit(); } function cancelUpload(){ window.close(); window.opener.focus(); } //--> </script> <form name="uploadform" method="post" action="uploadImage.jsp" ENCTYPE="multipart/form-data" target=_self> <center> <table border="1" width="65%"> <tr> <td colspan=2 nowrap align=center>广告图片上载</td> </tr> <tr> <td width="15%" nowrap >广告图片:</td> <td width="50%" nowrap><input type="file" name="adsImage" size="20"></td> </tr> <tr> <td align="center" colspan=2 > <input type="button" value="upload" onclick="return checkForm();" > <input type="button" value="Cancel" onclick="return cancelUpload();"> </td> </tr> </form> </table> <!-- <a href="Javascript:window.close();">close this window</a> --> <script language="JavaScript"> <!-- this.focus(); //--> </script> </body> 2. JSP File <%@ page language="java" import="com.jspsmart.upload.*, java.sql.*,java.util.* "%> <%-- use SmartUpload bean --%> <jsp:useBean id="mySmartUpload" scope="page" class="com.jspsmart.upload.SmartUpload" /> <% //Initialization mySmartUpload.init(config); mySmartUpload.service(request,response); //Set Restriction mySmartUpload.setAllowedFilesList("gif,bmp,jpeg,jpg"); mySmartUpload.setTotalMaxFileSize(51200); // Upload try{ mySmartUpload.upload(); } catch(Exception e){ out.println("<font color=red>Upload File Fail!</font> <a href= \"JavaScript:window.history.back();\">back</a><br>"); out.println("<UI>Notes:</UI>"); out.println("<UL>You must set correct File Name.</UL>"); out.println("<UL>You file size must be less than 50K.</UL>"); out.println("<UL>You can only upload .Gif .jpeg .jpg and .bmp files.</UL>"); return; } //save file to disk mySmartUpload.getFiles().getFile(0).saveAs("/" + "FileName"); %> 我这里有一个,不知用的上否?不过我用的数据库是Oracle8i的第一步:建立数据库create table test_img(id number(4),name varchar(20),img long raw);第二步:(NewImg.html)<html><head><title>添加图片</title></head><body>添加图片<br><form method="post" action="insertNews.jsp">图像ID:<input name="id" size="10"><br>选择图像:<input type="file" name="image"><br><input type="submit" value="上传" name="submit" size="25"><input type="reset" value="清除" name="clear" size="25"><br></form></body></html>第三步:插入数据库(InsertImg.jsp)<%@ page language="java"%><%@ page contentType="text/html;charset=gb2312" %><%@ page import="java.util.*" %><%@ page import="java.sql.*"%><%@ page import="java.text.*"%> <%@ page import="java.io.*"%> <%Class.forName("oracle.jdbc.driver.OracleDriver"); String url="jdbc:oracle:thin:@lubin:1521:b2bdb"; Connection con=DriverManager.getConnection(url,"demo","demo"); //插入数据库,在此处,表中有多少字段就要有多少个占位符(?)String sql="insert into test_img values (?,?,?)";//获取传值IDString id=request.getParameter("id");//获取image的路径String kk=request.getParameter("image");//转换成file格式File filename=new File(kk);//将文件的长度读出,并转换成Long型long l1=filename.length();int l2=(int)l1;//以流的格式赋值FileInputStream fis=new FileInputStream(filename);PreparedStatement ps =con.prepareStatement(sql);/************************************************************************************ 插入ID号,如果此处要插入空值的话,则可以用:ps.setString(1,"");** 参数1:存放ID的字段在表中的位置是第1个(以下同理)** 参数id:存放ID号的变量**********************************************************************************/ps.setString(1,id);ps.setString(2,filename.getName());/************************************************************************************ 以二进制形式将图片读取后插入表中。** 参数3:存放图片的字段在表中的位置是第3个** 参数fis:可以理解为文件名** 参数l2:上传图片的长度**********************************************************************************/ps.setBinaryStream(3,fis,l2);//ps.setBinaryStream(3,fis,fis.available()); //嘛意思ps.executeUpdate(); //嘛意思//ps.execute(); //嘛意思ps.close();fis.close();out.println("ok!!!");%>第四步:显示图片(ShowImg.jsp)<%@ page language="java" import="java.sql.*"%> <%@ page import="java.io.*"%> <%@ page contentType="text/html;charset=gb2312"%><% Class.forName("oracle.jdbc.driver.OracleDriver"); String url="jdbc:oracle:thin:@lubin:1521:b2bdb"; String image_id = (String) request.getParameter("ID");Connection con=DriverManager.getConnection(url,"demo","demo"); PreparedStatement sql=con.prepareStatement("select * from test_img WHERE id = " + image_id); ResultSet rs = sql.executeQuery(); rs.next(); //输入img字段内容到inInputStream in = rs.getBinaryStream("img"); //以下可是任何处理,比如向页面输出: response.reset(); //此处的image/jpeg似乎与显示的图片格式无关//因为我显示jsp和gif都没有错误response.setContentType("image/jpeg"); byte[] b = new byte[1024]; int len; while((len=in.read(b)) >0) response.getOutputStream().write(b,0,len); in.close(); rs.close(); %> 用这个试试第一步:建立数据库create table test_img(id number(4),name varchar(20),img long raw);第二步:(NewImg.html)<html><head><title>添加图片</title></head><body>添加图片<br><form method="post" action="insertNews.jsp">图像ID:<input name="id" size="10"><br>选择图像:<input type="file" name="image"><br><input type="submit" value="上传" name="submit" size="25"><input type="reset" value="清除" name="clear" size="25"><br></form></body></html>第三步:插入数据库(InsertImg.jsp)<%@ page language="java"%><%@ page contentType="text/html;charset=gb2312" %><%@ page import="java.util.*" %><%@ page import="java.sql.*"%><%@ page import="java.text.*"%> <%@ page import="java.io.*"%> <%Class.forName("oracle.jdbc.driver.OracleDriver"); String url="jdbc:oracle:thin:@lubin:1521:b2bdb"; Connection con=DriverManager.getConnection(url,"demo","demo"); //插入数据库,在此处,表中有多少字段就要有多少个占位符(?)String sql="insert into test_img values (?,?,?)";//获取传值IDString id=request.getParameter("id");//获取image的路径String kk=request.getParameter("image");//转换成file格式File filename=new File(kk);//将文件的长度读出,并转换成Long型long l1=filename.length();int l2=(int)l1;//以流的格式赋值FileInputStream fis=new FileInputStream(filename);PreparedStatement ps =con.prepareStatement(sql);/************************************************************************************ 插入ID号,如果此处要插入空值的话,则可以用:ps.setString(1,"");** 参数1:存放ID的字段在表中的位置是第1个(以下同理)** 参数id:存放ID号的变量**********************************************************************************/ps.setString(1,id);ps.setString(2,filename.getName());/************************************************************************************ 以二进制形式将图片读取后插入表中。** 参数3:存放图片的字段在表中的位置是第3个** 参数fis:可以理解为文件名** 参数l2:上传图片的长度**********************************************************************************/ps.setBinaryStream(3,fis,l2);//ps.setBinaryStream(3,fis,fis.available());ps.executeUpdate();//ps.execute();ps.close();fis.close();out.println("ok!!!");%> 新手求帮助啊,捣腾了好久好久 如何把机器上已经弄好的项目移到另外一台机器上 spring security2的问题 已知根据当天日期求出本周和本月的第一天日期和最后一天日期? eclipse发布的出问题,有经验者给个解决办法 HITZXL(编程要厚道) 请进,答谢100分 菜鸟学jsp,问题多多?请进来说说~~~~~~~`` 各位高人帮忙看看吧 我快愁死了 jsp怎么实现浏览器与word的集成? 菜鸟问题,送分了!!! 用commons fileupload如何写上传下载程序??求解 如何跨窗体操作??
<html>
<body>
<script LANGUAGE="javascript" SRC="JSFunction.js">
</script>
<script language="JavaScript">
<!--
function checkForm(){ if (document.uploadform.adsImage.value==""){
alert("You must choose what image file to upload!");
return false;
}
document.uploadform.submit();
}
function cancelUpload(){
window.close();
window.opener.focus();
}
//-->
</script>
<form name="uploadform" method="post"
action="uploadImage.jsp" ENCTYPE="multipart/form-data"
target=_self>
<center>
<table border="1" width="65%">
<tr>
<td colspan=2 nowrap align=center>广告图片上载</td> </tr>
<tr>
<td width="15%" nowrap >广告图片:</td>
<td width="50%" nowrap><input type="file"
name="adsImage" size="20"></td>
</tr>
<tr>
<td align="center" colspan=2 >
<input type="button" value="upload" onclick="return
checkForm();" >
<input type="button" value="Cancel" onclick="return
cancelUpload();">
</td> </tr>
</form>
</table>
<!--
<a href="Javascript:window.close();">close this window</a>
-->
<script language="JavaScript">
<!--
this.focus();
//-->
</script>
</body> 2. JSP File
<%@ page language="java" import="com.jspsmart.upload.*,
java.sql.*,java.util.* "%>
<%-- use SmartUpload bean --%>
<jsp:useBean id="mySmartUpload" scope="page"
class="com.jspsmart.upload.SmartUpload" /> <% //Initialization
mySmartUpload.init(config);
mySmartUpload.service(request,response); //Set Restriction
mySmartUpload.setAllowedFilesList("gif,bmp,jpeg,jpg");
mySmartUpload.setTotalMaxFileSize(51200); // Upload
try{
mySmartUpload.upload();
}
catch(Exception e){
out.println("<font color=red>Upload File Fail!</font>
<a href=
\"JavaScript:window.history.back();\">back</a><br>");
out.println("<UI>Notes:</UI>"); out.println("<UL>You must set correct File
Name.</UL>");
out.println("<UL>You file size must be less than
50K.</UL>");
out.println("<UL>You can only upload .Gif .jpeg .jpg and
.bmp files.</UL>"); return; }
//save file to disk
mySmartUpload.getFiles().getFile(0).saveAs("/" +
"FileName"); %>
create table test_img(id number(4),name varchar(20),img long raw);第二步:(NewImg.html)<html><head><title>添加图片</title></head>
<body>
添加图片<br>
<form method="post" action="insertNews.jsp">
图像ID:<input name="id" size="10">
<br>
选择图像:<input type="file" name="image">
<br>
<input type="submit" value="上传" name="submit" size="25">
<input type="reset" value="清除" name="clear" size="25">
<br>
</form>
</body></html>第三步:插入数据库(InsertImg.jsp)<%@ page language="java"%>
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import="java.util.*" %>
<%@ page import="java.sql.*"%>
<%@ page import="java.text.*"%>
<%@ page import="java.io.*"%> <%
Class.forName("oracle.jdbc.driver.OracleDriver");
String url="jdbc:oracle:thin:@lubin:1521:b2bdb";
Connection con=DriverManager.getConnection(url,"demo","demo"); //插入数据库,在此处,表中有多少字段就要有多少个占位符(?)
String sql="insert into test_img values (?,?,?)";
//获取传值ID
String id=request.getParameter("id");
//获取image的路径
String kk=request.getParameter("image");
//转换成file格式
File filename=new File(kk);//将文件的长度读出,并转换成Long型
long l1=filename.length();
int l2=(int)l1;//以流的格式赋值
FileInputStream fis=new FileInputStream(filename);PreparedStatement ps =con.prepareStatement(sql);
/**********************************************************************************
** 插入ID号,如果此处要插入空值的话,则可以用:ps.setString(1,"");
** 参数1:存放ID的字段在表中的位置是第1个(以下同理)
** 参数id:存放ID号的变量
**********************************************************************************/
ps.setString(1,id);ps.setString(2,filename.getName());
/**********************************************************************************
** 以二进制形式将图片读取后插入表中。
** 参数3:存放图片的字段在表中的位置是第3个
** 参数fis:可以理解为文件名
** 参数l2:上传图片的长度
**********************************************************************************/
ps.setBinaryStream(3,fis,l2);
//ps.setBinaryStream(3,fis,fis.available()); //嘛意思
ps.executeUpdate(); //嘛意思
//ps.execute(); //嘛意思
ps.close();
fis.close();
out.println("ok!!!");
%>第四步:显示图片(ShowImg.jsp)<%@ page language="java" import="java.sql.*"%>
<%@ page import="java.io.*"%>
<%@ page contentType="text/html;charset=gb2312"%><%
Class.forName("oracle.jdbc.driver.OracleDriver");
String url="jdbc:oracle:thin:@lubin:1521:b2bdb";
String image_id = (String) request.getParameter("ID");Connection con=DriverManager.getConnection(url,"demo","demo");
PreparedStatement sql=con.prepareStatement("select * from test_img WHERE id = " + image_id);
ResultSet rs = sql.executeQuery(); rs.next();
//输入img字段内容到in
InputStream in = rs.getBinaryStream("img"); //以下可是任何处理,比如向页面输出: response.reset();
//此处的image/jpeg似乎与显示的图片格式无关
//因为我显示jsp和gif都没有错误
response.setContentType("image/jpeg");
byte[] b = new byte[1024];
int len;
while((len=in.read(b)) >0)
response.getOutputStream().write(b,0,len); in.close();
rs.close();
%>
create table test_img(id number(4),name varchar(20),img long raw);第二步:(NewImg.html)<html><head><title>添加图片</title></head>
<body>
添加图片<br>
<form method="post" action="insertNews.jsp">
图像ID:<input name="id" size="10">
<br>
选择图像:<input type="file" name="image">
<br>
<input type="submit" value="上传" name="submit" size="25">
<input type="reset" value="清除" name="clear" size="25">
<br>
</form>
</body></html>第三步:插入数据库(InsertImg.jsp)<%@ page language="java"%>
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import="java.util.*" %>
<%@ page import="java.sql.*"%>
<%@ page import="java.text.*"%>
<%@ page import="java.io.*"%> <%
Class.forName("oracle.jdbc.driver.OracleDriver");
String url="jdbc:oracle:thin:@lubin:1521:b2bdb";
Connection con=DriverManager.getConnection(url,"demo","demo"); //插入数据库,在此处,表中有多少字段就要有多少个占位符(?)
String sql="insert into test_img values (?,?,?)";
//获取传值ID
String id=request.getParameter("id");
//获取image的路径
String kk=request.getParameter("image");
//转换成file格式
File filename=new File(kk);//将文件的长度读出,并转换成Long型
long l1=filename.length();
int l2=(int)l1;//以流的格式赋值
FileInputStream fis=new FileInputStream(filename);PreparedStatement ps =con.prepareStatement(sql);
/**********************************************************************************
** 插入ID号,如果此处要插入空值的话,则可以用:ps.setString(1,"");
** 参数1:存放ID的字段在表中的位置是第1个(以下同理)
** 参数id:存放ID号的变量
**********************************************************************************/
ps.setString(1,id);ps.setString(2,filename.getName());
/**********************************************************************************
** 以二进制形式将图片读取后插入表中。
** 参数3:存放图片的字段在表中的位置是第3个
** 参数fis:可以理解为文件名
** 参数l2:上传图片的长度
**********************************************************************************/
ps.setBinaryStream(3,fis,l2);
//ps.setBinaryStream(3,fis,fis.available());
ps.executeUpdate();
//ps.execute();
ps.close();
fis.close();
out.println("ok!!!");
%>