public void showPhoto(HttpServletResponse response,String fphotoId){
Connection conn = null;
try{
try {
InitialContext ic = new InitialContext();
Statement stmt = null;
conn = DBConnection.getConnection();
BufferedInputStream inputimage = null;
stmt = conn.createStatement();
boolean defaultCommit = conn.getAutoCommit();
conn.setAutoCommit(false);
ResultSet rs = stmt.executeQuery("SELECT * FROM t_photo WHERE fid='"+ fphotoId + "'");
if (rs.next()) {
Blob blob = (Blob) rs.getBlob("fimage");
long size = blob.length();
byte[] bs = blob.getBytes(1, (int) size);
response.setContentType("image/jpeg;charset=GB2312");
response.setHeader("Content-Transfer-Encoding", "base64");
String filepath = "";
String dir = this.getServlet().getServletContext().getRealPath("UPLOAD");
File dirFile = new File(dir);
if (!(dirFile.exists()) && !(dirFile.isDirectory())) {
dirFile.mkdir();
}
String filename = getRndFileName("jpg");
filepath = fphotoId+ filename.substring(filename.lastIndexOf("."),filename.length());
OutputStream out1 = new FileOutputStream(dir + "\\" + filepath);
out1.write(bs, 0, bs.length);
out1.close();
rs.close();
} else {
rs.close();
}
} catch (Exception e) {
conn.rollback();
e.printStackTrace();
} finally {
conn.close();
}
}catch(Exception e){
e.printStackTrace();
}
}
/**
* @param path
* @return 返回随机获得的文件名 获取随机文件名.如 aa.gif bb.jpg 等.
*/
public String getRndFileName(String path) {
String rndFileName = String.valueOf(System.currentTimeMillis())
+ String.valueOf(new Random().nextInt(100));
String extFileName = getExName(path);
if (!extFileName.equals("")) {
rndFileName = rndFileName + "." + extFileName;
}
return rndFileName;
}
// 获取文件扩展名.如: gif jpg (不包括".")等.
public String getExName(String path) {
int strint = path.lastIndexOf(".");
return path.substring(strint + 1);// 这样是不包括点
// return path.substring(strint);//这样是有包括点
}
将读取的图片上传到服务器中。。。。
if(productList.size() != 0){
for (Product product : productList) {
if(product.getPhoto() != null){
String fphotoid = product.getPhoto().getFid();
String filepath = "";
String dir = this.getServlet().getServletContext().getRealPath("UPLOAD");
filepath = dir + "\\"+fphotoid+".jpg";
File file = new File(filepath);
if(!file.exists()){
showPhoto(response,fphotoid);
}
}
}
request.setAttribute("productList",productList);
}
分享到:
相关推荐
本篇文章将深入探讨如何在Delphi中读取和写入SQL Server的"image"字段,特别关注于读取和写入DMP、JPG和GIF等图片格式。 首先,确保你的Delphi项目已经集成了ADO(ActiveX Data Objects)组件库,因为我们将使用它...
MATLAB 中二进制数据的读取 MATLAB 提供了多种方式从磁盘读入文件或将数据输入到工作空间,即读取数据,又叫导入数据;将工作空间的变量存储到磁盘文件中称为存写数据,又叫导出数据。选择哪种机制,则根据用户所...
本篇将基于提供的文件信息——“SQL查询二进制内容”来深入探讨如何使用SQL语法来查询二进制字段存储的内容。 ### SQL查询二进制内容 #### 一、理解二进制字段 在数据库中,二进制字段是用来存储二进制数据的特殊...
本文将深入探讨如何从SQL数据库中读取存储的二进制图片,并将其转换为可本地查看的文件。 首先,我们需要了解在SQL数据库中存储二进制数据的基本概念。通常,我们会使用BLOB(Binary Large Object)类型来存储图片...
本文将详细介绍如何使用Java语言读取SQL Server中的`IMAGE`字段,并将其转换为图片文件。 #### 二、关键技术点 ##### 1. JDBC连接SQL Server 在Java中,通过JDBC (Java Database Connectivity) 连接SQL Server是...
### 如何将图片以二进制方式存入SQL Server数据库并读取出来 在实际的应用开发过程中,我们经常需要处理图像文件,例如用户头像、产品图片等。这些图像文件通常体积较大,不适合直接存储为文件系统中的独立文件,...
本文将深入探讨如何在 Delphi 中存储和读取二进制图片,重点在于流操作,并结合XE10及7版本的代码实例进行讲解。 1. **二进制图片的理解** 图片在计算机中是以二进制形式存储的,由像素数据组成,这些数据可以是...
在本文中,我们将深入探讨如何使用KEPServer来读取SQL Server数据库的具体步骤。 首先,打开KEPServer软件并创建一个新的通道。选择"ODBC Client"作为数据源类型,因为我们需要通过ODBC(Open Database ...
"C#图片转换成二进制流并保存到SQL Server数据库" 本文将详细讲解如何使用C#将图片转换成二进制流并保存到SQL Server数据库。以下是相关知识点的总结: 一、图片转换成二进制流 在C#中,可以使用FileStream类来...
SQL Server数据库提供了一种存储二进制大对象(BLOB)数据类型,如图片,的机制,即`image`类型(在较新版本中被`varbinary(max)`替代)。本篇将详细介绍如何使用Python连接SQL Server并存储二进制图片。 首先,...
在Matlab中,读取二进制数据是一项常见的任务,特别是在处理硬件接口、数据记录或文件格式转换时。本文主要讨论如何在Matlab环境中读取和写入二进制数据。 二进制数据读取主要有两种方法:使用导入模板和使用专门的...
本文将深入探讨如何在C#中进行二进制图片的存储和读取,并结合SQL Server数据库进行操作。 首先,让我们了解二进制流的基本概念。二进制流是计算机处理数据的一种方式,它将图像、音频、视频等非文本数据以连续的...
在MATLAB中,二进制数据的读取和存写是一项重要的操作,特别是在处理大量原始数据或需要高效传输数据的场合。MATLAB提供了多种方法来处理这类任务,包括使用内置函数和I/O文件函数。 首先,要理解二进制文件与文本...
在ASP.NET(C#)开发中,常常需要处理存储在SQL Server数据库中的二进制数据,例如图片、PDF文档等。本教程将详细讲解如何从数据库中下载这些以二进制形式存储的图片。 首先,我们需要了解数据库中二进制数据的存储...
在Matlab中,二进制数据的读取是常见的任务,尤其在处理底层硬件数据或者科学计算时。本文主要介绍了两种方法:使用导入模板和使用导入函数。 首先,使用导入模板读取二进制数据非常直观。只需通过File菜单选择...
其次,我们需要创建一个存储过程 SQLDEBUG_TextCopy,这个存储过程将负责将二进制数据从文件中读取出来并写入到 SQL Server 数据库中。这个存储过程将 accept 七个参数:服务器名、登录名、密码、数据库名、表名、...
本篇文章将详细探讨如何在WPF应用中使用SQLite数据库来存储和读取二进制图片。 一、SQLite简介 SQLite是一款开源、无服务器、零配置、事务性的SQL数据库引擎,适用于嵌入式环境,无需额外的安装或管理。它支持标准...
在本例中,图片被读取为二进制流,这是因为图片是由像素数据组成的,这些数据无法直接以文本格式解析。将图片转换为二进制流后,可以方便地在内存中操作,同时也利于存储到支持二进制数据的数据库字段中。 二、图片...
本文主要介绍了C#实现把图片转换成二进制以及把二进制转换成图片的方法,并结合具体实例形式分析了基于C#的图片与二进制相互转换以及图片保存到数据库的相关操作技巧。 一、图片转换成二进制 在C#中,可以使用...