
这种代码网上不是一大片吗
public boolean storeImage(File file){try{
// 打开文件
FileInputStream fin = new FileInputStream(file)
// 建一个缓冲保存数据
ByteBuffer nbf = ByteBuffer.allocate((int) file.length())
byte[] array = new byte[1024]
int offset = 0, length = 0
// 读存数据
while((length = fin.read(array)) > 0){
if(length != 1024) nbf.put(array,0,length)
else nbf.put(array)
offset += length
}
// 关闭文件
fin.close()
// 新建一个数组保存要写的内容
byte[] content = nbf.array()
String sql = "insert into images (bin_data) values (?) "
PreparedStatement pstmt = conn.prepareStatement(sql)
pstmt.setBytes(1,content)
pstmt.execute()
pstmt.close()
}catch(Exception e){
e.printStackTrace()
return false
}
return true
}
我把你的代码稍微改造了下,我这边是可以显示图片的。代码如下:
数据库 *** 作部分:
package com.databaseimport java.io.InputStream
import java.sql.*
/**
* @作者 王建明
* @创建日期 13-10-7
* @创建时间 下午12:32
* @版本号 V 1.0
*/
public class DataBaseUtil {
public static InputStream getImageStreamFromDataBase() {
Connection conn = null
try {
Class.forName("com.mysql.jdbc.Driver")
conn =
DriverManager.getConnection("jdbc:mysql://localhost/quickstart", "root", "123456")
Statement stmt = conn.createStatement()
String sql = "select book_image from tbl_book where id=1 "
ResultSet rs = stmt.executeQuery(sql)
if (rs.next()) {
return rs.getBinaryStream("book_image")
}
} catch (Exception e) {
System.out.println("出现异常: " + e.getMessage())
} finally {
try {
if (conn != null)
conn.close()
} catch (SQLException e) {
e.printStackTrace()
}
}
return null
}
}
servlet部分:
package com.servletimport com.database.DataBaseUtil
import javax.servlet.ServletException
import javax.servlet.http.HttpServlet
import javax.servlet.http.HttpServletRequest
import javax.servlet.http.HttpServletResponse
import java.io.IOException
import java.io.InputStream
import java.io.OutputStream
/**
* @作者 王建明
* @创建日期 13-10-7
* @创建时间 下午12:18
* @版本号 V 1.0
*/
public class ShowImage extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response)
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
InputStream in = DataBaseUtil.getImageStreamFromDataBase()
OutputStream toClient = response.getOutputStream()
response.reset()
response.setContentType("image/jpg")//或gif
int len = 10*1024*1024
byte[] P_Buf = new byte[len]
int i
while((i = in.read(P_Buf)) != -1){
toClient.write(P_Buf, 0, i)
}
in.close()
toClient.flush()
toClient.close()
}
}
web.xml中的servlet配置:
<servlet><servlet-name>ShowImage</servlet-name>
<servlet-class>com.servlet.ShowImage</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ShowImage</servlet-name>
<url-pattern>/showImage</url-pattern>
</servlet-mapping>
页面中加载图片方式:
<img src="showImage" />希望对你有帮助O(∩_∩)O~
一般数据库只存图片的路径。你可以在web下建一个目录(images),然后把上传的图片放在里面。最好是用系统时间命名,避免冲突。具体路径是通过request.getRealPath("images")得到,让后把图片改名放进去。
数据库记住相对的路径(1111.jpg)就可以了,在页面可以<img src="$contextPath/imags/1111.jpg" .../>
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)