如何将图片写入数据库???

dike103 2003-10-16 11:47:29
第一个页面是:(用户选择)
<select name=face size=1>
<option value='img/01.gif'>01</option>
<option value='img/02.gif'>02</option>
<option value='img/03.gif'>03</option>
<option value='img/04.gif'>04</option>
<option value='img/05.gif'>05</option>
<option value='img/06.gif'>06</option>
<option value='img/07.gif'>07</option>
<option value='img/08.gif'>08</option>
<option value='img/09.gif'>09</option>
<option value='img/10.gif'>10</option>
</select>

第二个页面:(获取)
这里是这样获取的吗?
String face=request.getParameter("face");

然后我们要怎么样把图片存进数据库?(我用的是SQLSERVER2000数据库)
表名为:huiyuan
表里面有字段:img 数据类型为:image

最好有代码(不要用BEAN的最好)
...全文
513 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
grgh2000 2003-10-18
  • 打赏
  • 举报
回复
还没有搞定吗?
up
我以前遇到这此问题,没有解决,简单化了:把图片文件名存入数据库,真正的图片上传到一个目录下。
有时换个方法,问题也许会很快解决。
zhanghuazhanghome 2003-10-18
  • 打赏
  • 举报
回复
关注
lynx1111 2003-10-16
  • 打赏
  • 举报
回复

jsp上传图片到Oracle数据库
看看对你有没有帮助?
第一步:建立数据库
create table test_img(id number(4),name varchar(20),pic 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);
ps.setString(1,id);
ps.setString(2,filename.getName());
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();
%>



lynx1111 2003-10-16
  • 打赏
  • 举报
回复

<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<%@ page import="java.lang.*" %>
<%@ page import="com.jspsmart.upload.*" %>
<%@ page import="DBstep.iDBManager2000.*"%>
<%
//实例化上载bean
com.jspsmart.upload.SmartUpload mySmartUpload=new com.jspsmart.upload.SmartUpload();
//初始化
mySmartUpload.initialize(pageContext);
//设置上载的最大值
mySmartUpload.setMaxFileSize(500 * 1024*1024);
//上载文件
mySmartUpload.upload();
//循环取得所有上载的文件
// for (int i=0;i<mySmartUpload.getFiles().getCount();i++){
//取得上载的文件
com.jspsmart.upload.File myFile = mySmartUpload.getFiles().getFile(0);
if (!myFile.isMissing())
{
//取得上载的文件的文件名
String myFileName=myFile.getFileName();
//取得不带后缀的文件名
String suffix=myFileName.substring(0,myFileName.lastIndexOf('.'));
//取得后缀名
String ext= mySmartUpload.getFiles().getFile(0).getFileExt();
//取得文件的大小
int fileSize=myFile.getSize();
//保存路径
String trace="c:/"+myFileName;
//取得别的参数
String explain=(String)mySmartUpload.getRequest().getParameter("text");
String send=(String)mySmartUpload.getRequest().getParameter("send");
//将文件保存在服务器端
myFile.saveAs(trace,mySmartUpload.SAVE_PHYSICAL);
//下面的是将上载的文件保存到数据库中
//将文件读到流中
java.io.File file = new java.io.File(trace);
java.io.FileInputStream fis = new java.io.FileInputStream(file);
//打开数据库
ResultSet result=null;
String mSql=null;
PreparedStatement prestmt=null;
DBstep.iDBManager2000 DbaObj=new DBstep.iDBManager2000();
DbaObj.OpenConnection();
//将文件写到数据库中
mSql="insert into marklist (markname,password,marksize,markdate,MarkBody) values (?,?,?,?,?)";
prestmt =DbaObj.Conn.prepareStatement(mSql);
prestmt.setString(1, "aaa");
prestmt.setString(2, "0000");
prestmt.setInt(3, fileSize);
prestmt.setString(4, DbaObj.GetDateTime());
prestmt.setBinaryStream(5,fis,(int)file.length());
DbaObj.Conn.setAutoCommit(true) ;
prestmt.executeUpdate();
DbaObj.Conn.commit();
out.println(("上载成功!!!").toString());
}
else
{ out.println(("上载失败!!!").toString()); }
// }//与前面的if对应
%>

mtou 2003-10-16
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/2332/2332637.xml?temp=.3304254
hj12 2003-10-16
  • 打赏
  • 举报
回复
File file=new File("path");
FileInputStream input=new FileInputStream(file);
byte[] buffer = new byte[8192];
int bytesRead = 0;
while ((bytesRead = stream.read(buffer, 0, 8192)) != -1) {
input.write(buffer, 0, bytesRead);
}
map=baos.toByteArray();
将这map二进制数组存入数据库就可以了!
dike103 2003-10-16
  • 打赏
  • 举报
回复
我都知道是用到这个技术,可是我不知道具体要怎么做?
请具体点好吗?
cen8535 2003-10-16
  • 打赏
  • 举报
回复
二进制流的形式
dike103 2003-10-16
  • 打赏
  • 举报
回复
写进数据库
stone18 2003-10-16
  • 打赏
  • 举报
回复
图片写进数据库还是上传的根目录上
hj12 2003-10-16
  • 打赏
  • 举报
回复
mark
caina3 2003-10-16
  • 打赏
  • 举报
回复
mark
swanmarx 2003-10-16
  • 打赏
  • 举报
回复
楼上的说的不错!我也是这样做的

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧