package com.hous.test; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.InetSocketAddress; import java.net.Proxy; import java.net.URL; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import javax.imageio.ImageIO; public class StoreImage { /** * 本地图片存储 * @throws SQLException * @throws IOException */ public void insertBlobLocal() throws Exception { Connection conn = null; PreparedStatement stmt = null; conn = ConnDb.getConnection( "jdbc:mysql://localhost:3306/数据库", "用户名", "密码"); String sql = "insert into image(img, title) values(?,?)"; stmt = conn.prepareStatement(sql); File file = new File("D:\\hsTemp\\1.png"); FileInputStream fis = new FileInputStream(file); stmt.setBinaryStream(1, fis, (int) file.length()); stmt.setString(2, "myimg"); stmt.execute(); fis.close(); } /** * 远程图片存储 * @throws SQLException * @throws IOException */ public void insertBlobRemote() throws Exception { String url = "http://ec4.images-amazon.com/images/I/51XMC7MVcFL._SX258_BO1,204,203,200_.jpg"; String ext = url.substring(url.lastIndexOf(".")); Connection conn = null; PreparedStatement stmt = null; conn = ConnDb.getConnection( "jdbc:mysql://localhost:3306/数据库", "用户名", "密码"); String sql = "insert into image(img, title) values(?,?)"; stmt = conn.prepareStatement(sql); //File file = new File("e:\\img\\1.jpg"); //获取图片 InputStream inputStream = getImgFromUrl(url); //保存成File File file = inputstreamtofile(inputStream, ext); FileInputStream fis = new FileInputStream(file); stmt.setBinaryStream(1, fis, (int) file.length()); stmt.setString(2, "myimg"); stmt.execute(); fis.close(); //删除临时文件 file.deleteOnExit(); } public InputStream getImgFromUrl(String url) throws IOException{ //Proxy proxy = new Proxy(Proxy.Type.HTTP,new InetSocketAddress("10.167.129.102", 8080)); URL myUrl = new URL(url); HttpURLConnection con = (HttpURLConnection) myUrl.openConnection(); con.setConnectTimeout(5*1000); InputStream is = con.getInputStream(); return is; } /*public InputStream getImgFromUrl() throws IOException{ System.getProperties().setProperty("proxySet", "true"); //设置你的主机 System.getProperties().setProperty("http.proxyHost", "127.0.0.1"); //设置你的端口 System.getProperties().setProperty("http.proxyPort", "8080"); String urlStr2="http://ec4.images-amazon.com/images/I/51XMC7MVcFL._SX258_BO1,204,203,200_.jpg"; URL url2 = new URL(urlStr2); HttpURLConnection connection = (HttpURLConnection) url2.openConnection(); connection.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)"); return connection.getInputStream(); }*/ public File inputstreamtofile(InputStream ins, String ext) throws IOException{ File f = new File("d:\\Temp"); File file = File.createTempFile("temp", ext, f); OutputStream os = new FileOutputStream(file); int bytesRead = 0; byte[] buffer = new byte[8192]; while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) { os.write(buffer, 0, bytesRead); } os.close(); ins.close(); return file; } public static void main(String[] args) { StoreImage storeImage = new StoreImage(); try { // storeImage.insertBlobLocal(); storeImage.insertBlobRemote(); } catch (Exception e) { e.printStackTrace(); } } }
数据库连接
package com.hous.test; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnDb { private static String driver = "com.mysql.jdbc.Driver"; public static Connection getConnection(String url, String user, String password) throws Exception { Connection connection = null; Class.forName(driver); connection = DriverManager.getConnection(url, user, password); return connection; } }
相关推荐
5. **显示图片**:要从数据库中检索图片,可以创建一个`SELECT`查询,获取`ImageData`字段。使用`OleDbDataReader`读取结果,然后将字节数组写入响应流或临时文件,以便在界面上显示。例如,使用`pictureBox1.Image ...
在Windows 10 64位操作系统中,使用Visual Studio 2017的MFC(Microsoft Foundation Classes)框架开发应用程序时,有时我们需要处理图像数据并将其存储到SQL Server数据库中。MFC是C++的一个类库,它为构建Windows...
- 图片保存到数据库可能会占用大量空间,考虑是否需要先保存到服务器磁盘,然后仅存储文件路径在数据库中。 - 使用事务管理确保数据库操作的原子性。 - 对上传的文件名进行唯一化处理,避免文件重名问题。 总之...
我们需要创建一个新的记录,将图片的存储路径作为数据字段保存到数据库中。 5. **数据库连接**:在ASP中,使用ADODB.Connection对象建立与数据库的连接,并使用ADODB.Recordset对象来执行SQL语句,如INSERT INTO...
要删除数据库中的图片,只需执行一个SQL DELETE语句,然后从文件系统中删除对应的临时文件: ```csharp public void DeleteImageFromDB(int id) { using (var conn = new SQLiteConnection("Data Source=your_...
在PB9中处理图片数据,主要涉及到数据库中的BLOB(Binary Large Object)类型字段,用于存储非结构化的二进制数据,如图像、音频或视频文件等。以下将详细解释如何在PB9中进行数据库存取图片的操作。 首先,我们...
要显示从数据库中读取的图片,我们需要首先查询出包含图片数据的记录,然后将二进制数据转换回图片格式。在VBA中,可以通过`Open`和`SaveAsFile`方法将BLOB字段的内容写入临时文件,然后使用图片控件或者...
总之,通过JSP和相关的Java库,我们可以实现一个用户友好的图片上传功能,将图片保存在服务器并将其数据存储到数据库中。这样的功能在很多Web应用中都很常见,如在线相册、社交网络等。理解并掌握这一过程对于任何...
- 使用JSP页面展示图片,可以使用`<img>`标签,其`src`属性指向一个Servlet,Servlet负责从数据库中获取图片数据并输出到响应流中。 8. **安全考虑**: - 防止文件上传攻击,例如拒绝上传非图片文件或恶意脚本。 ...
这个项目实现了一个基本的图片上传功能,将图片保存到服务器的特定文件夹,同时将图片的路径和标题存储到MySQL数据库中,以便后续在需要的地方输出或展示图片。以下是关于这个项目的详细知识点: 1. **PHP文件上传*...
在本项目"struts2+jdbc实现图片的存储与显示(图片存储在数据库内)"中,我们将探讨如何结合这两个技术来处理图片数据,将图片存储到数据库内,并从数据库中检索以供显示。 首先,我们需要了解在数据库中存储图片的...
6. **清除缓存**:在Android中,应用可以清理自己的缓存数据,这通常包括临时文件和数据库记录,以释放存储空间。尽管清理缓存可能需要读写权限,但系统通常允许应用在自己的缓存目录下进行此操作,而无需请求用户...
从数据库中提取的图片通常是以二进制数据的形式存储,需要先写入到临时文件夹,以便进行后续处理。C#提供了System.IO命名空间,可以用来创建、读取和删除文件。 4. **PDF转换**: 将图片转换为PDF文件,项目可能...
4. **数据库操作**:在确认文件无误后,我们需要将其数据保存到数据库中。ASP可以连接到数据库,执行SQL命令。在SQL Server中,这可能涉及创建一个BLOB(Binary Large Object)类型的列来存储图片数据。可以使用`...
5. **保存图片路径**:保存图片的完整路径应该被持久化,比如存储在 SharedPreferences 或数据库中,以便软件重启后能够访问。使用`SharedPreferences.Editor`接口来保存路径信息。 6. **读取历史记录**:在应用...
将其保存到临时文件,然后用VB的PictureBox控件加载这个临时文件。 ```vb Dim rs As New ADODB.Recordset rs.Open "SELECT ImageData FROM Photos WHERE PhotoID = 1", conn If Not rs.EOF Then Dim ...
4. **查询与显示图片**: 要从数据库中检索图片,我们可以使用`Query`或`Criteria` API。获取到结果后,将其转换回图片并显示。注意,由于二进制数据通常不适合直接在网页上展示,所以可能需要将其写入临时文件,再...
- 将该数据赋值给PictureBox的Picture属性,或者将其保存到临时文件,然后使用标准的图像处理控件加载显示。 **注意事项:** - 存储图片可能会显著增加数据库大小,所以要考虑空间利用率和性能。 - OLE对象链接的...
4. **使用帮助.url**:这是一个快捷方式文件,链接到一个外部的使用帮助页面,用户可以点击打开获取更详尽的操作指南。 5. **face**:这个名字可能是图片或表情库的文件夹,用于在留言中插入或选择表情,增加互动性...
- 文件处理包括将文件数据保存到数据库中,典型的存储方式包括二进制数据或者文件路径的存储。本文指出,文件数据被保存为数据流到数据库中。 2. 数据库设计 - 需要创建一个表来存储图片信息,例如命名为[dbo]....