【JSP】上传图片到数据库中
2016-05-07 20:55
375 查看
第一步:建立数据库 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("com.microsoft.jdbc.sqlserver.SQLServerDriver"); //com.microsoft.jdbc.sqlserver.SQLserveDriver String url="jdbc:oracle:thin:@lubin:1521:b2bdb"; //jdbc:microsoft:sqlserver://127.0.0.1:1433; jdbc:microsoft.sqlserver://127.0.0.1:1433 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(); 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(); %>
上传页面 一定要用POST 还要l加一个属性 enctype="multipart/form-data", 进去了才解析请求体才能得到的
你写 <file name="filename" /> 你在服务端 request.getParameter("filename"); 是得不到的
因为这些数据和 上传的文件流都封装在请求体中, 要解析的
你如果只要文件名: 可以这样
<file name="file" />
<hidden type="text" name="filename" />
<%--
类型enctype用multipart/form-data,这样可以把文件中的数据作为流式数据上传,不管是什么文件类型,均可上传。
--%>
相关文章推荐
- python数据库编程入门:python3.5连接mysql
- MySQL学习6:MySQL基本数据类型
- django配置连接多个数据库,自定义表名称
- MySQL在有索引列情况下 和 无索引情况下 select *的输出结果顺序
- 优化mysql的limit offset
- PowerDesigner的安装和数据库创建(转载)
- centos6.7 搭建 redis集群
- 理解MySQL——架构与概念
- Flask 数据库高级多对多关系
- 如何在Mongodb集合中统计去重之后的数据
- MySql中的varchar类型
- 30多条mysql数据库优化方法,千万级数据库记录查询轻松解决
- mysql-5.7.12-winx64配置和修改root密码的方法
- C#二十五 连接式访问数据库
- C#二十五 连接式访问数据库
- C#二十五 连接式访问数据库
- Oracle ORA-01033: ORACLE initialization or shutdown in progress 错误解决办法
- Oracle Virtualbox 升级=====>Ubuntu
- SQL SERVER透视转换(行旋转列)
- redis集群搭建之二~使用redis-trib.rb方法