JDBC存储和读取二进制数据
2015-01-18 11:47
363 查看
以下JSP文件用common-fileupload组件实现文件上传,并将文件以二进制文件的形式存入数据库
<% if("POST".equalsIgnoreCase(request.getMethod)){//如果是POST表单 DiskFileUpload diskFileUpload = newDiskFileUpload(); diskFileUpload.setHeaderEncoding("UTF-8");//设置编码 //解析上传的数据 List <FileItem> list =diskFileUpload.parseRequest(request); for(FileItem fileItem : list){ if(!fileItem.isFormField()){ //如果是文件域 //文件路径,替换掉特殊字符 String filename =fileItem.getName().replace("\\","/"); //获取文件名 filename =filename.substring(filename.lastIndexOf("/")+1); //获取文件类型 String filetype =fileItem.getContentType(); //获取文件大小 Int filesize =fileItem.getSize(); Connection conn = null; PrepareStatement preStmt = null; try{ conn = DbManager.getConnection(); preStmt = conn.prepareStatement( "insert into table_name (filename,filetype,size,content,date) values(?,?,?,?,?)"); preStmt.setString(1,filename); preStmt.setString(2,filetype); preStmt.setInt(3,filesize); preStmt.setBinaryStream(4,fileItem.getInputStream(),filesize); preStmt.setTimestamp(5,newTimestamp(System.currentTimeMills())); preStmt.executeUpdate(); }finally{ if(preStmt != null) preStmt.close(); if(conn != null) conn.close(); } } } } %>
读取二进制文件
<% out.clear(); //清空一切输出 int id=Integer.parseInt(request.getParameter("id")); //获取附件ID Connection conn= null; PrepareStatementpreStmt = null; ResultSet rs =null; try{ conn =DbManager.getConnection(); preStmt =conn.prepareStatement("select from table_name where id = ?"); preStmt.setInt(1,id); rs =preStmt.executeQuery(); if(rs.next()){ response.reset(); //重置response response.setContentType(rs.getString("fileType"));//设置输出的文件类型 response.setContentLength(ra.getInt("filesize"));//设置输出的文件长度 InputStream ins = null; OutputStream ous = null; try{ ins = rs.getBinaryStream("content"); ous = response.getOutputStream(); byte [] b = new byte[1024]; int len = 0; while((len = ins.read(b)) !=-1){ ous.write(b,0,len); } }finally{ if(ous != null) ous.close(); if(ins != null) ins.close(); } }else{ out.println("没有找到附件:"+id); } }finally{ if(rs! = null) rs.close(); if(preStmt != null) preStmt.close(); if(conn != null) conn.close(); } %>
相关文章推荐
- JDBC处理大数据(大二进制数据的存储和读取)
- JDBC存储和读取二进制数据
- SQLite数据库如何存储和读取二进制数据
- JDBC处理大数据(存储图像、声音、二进制)
- 通过JDBC向数据库中存储&读取Blob数据
- spark中通过jdbc读取和存储数据
- Java用JDBC保存读取二进制数据
- access存储和读取二进制字段数据
- jdbc 大数据存储 图片读取
- jdbc 使用PreparedStatement来存储和读取大数据(Blob或Clob)
- SQLite数据库如何存储和读取二进制数据
- JDBC处理大数据(大文本的存储和读取)
- SQLite数据库如何存储和读取二进制数据
- SQLite数据库如何存储和读取二进制数据
- C# 向数据中存储和读取二进制文件!!
- JDBC-二进制文件的存储与读取
- SQLite数据库如何存储和读取二进制数据
- JDBC处理大数据(大文本的存储和读取)
- Java JDBC读取二进制类型数据(BLOB)
- jdbc 使用PreparedStatement来存储和读取大数据(Blob或Clob)