`

从网络获取图片保存临时文件,添加到数据库中

 
阅读更多
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;
	}
	
}

 

 

 

分享到:
评论

相关推荐

    图片保存到access数据库

    5. **显示图片**:要从数据库中检索图片,可以创建一个`SELECT`查询,获取`ImageData`字段。使用`OleDbDataReader`读取结果,然后将字节数组写入响应流或临时文件,以便在界面上显示。例如,使用`pictureBox1.Image ...

    MFC(VS)保存图片到SQLServer数据库

    在Windows 10 64位操作系统中,使用Visual Studio 2017的MFC(Microsoft Foundation Classes)框架开发应用程序时,有时我们需要处理图像数据并将其存储到SQL Server数据库中。MFC是C++的一个类库,它为构建Windows...

    jsp 上传图片并保存到数据库里的servlet代码和jsp代码

    - 图片保存到数据库可能会占用大量空间,考虑是否需要先保存到服务器磁盘,然后仅存储文件路径在数据库中。 - 使用事务管理确保数据库操作的原子性。 - 对上传的文件名进行唯一化处理,避免文件重名问题。 总之...

    asp无插件上传图片并将地址保存到数据库

    我们需要创建一个新的记录,将图片的存储路径作为数据字段保存到数据库中。 5. **数据库连接**:在ASP中,使用ADODB.Connection对象建立与数据库的连接,并使用ADODB.Recordset对象来执行SQL语句,如INSERT INTO...

    C#保存图片到数据库。

    要删除数据库中的图片,只需执行一个SQL DELETE语句,然后从文件系统中删除对应的临时文件: ```csharp public void DeleteImageFromDB(int id) { using (var conn = new SQLiteConnection("Data Source=your_...

    PB9数据库存取图片

    在PB9中处理图片数据,主要涉及到数据库中的BLOB(Binary Large Object)类型字段,用于存储非结构化的二进制数据,如图像、音频或视频文件等。以下将详细解释如何在PB9中进行数据库存取图片的操作。 首先,我们...

    保存图片到数据库ACCESS

    要显示从数据库中读取的图片,我们需要首先查询出包含图片数据的记录,然后将二进制数据转换回图片格式。在VBA中,可以通过`Open`和`SaveAsFile`方法将BLOB字段的内容写入临时文件,然后使用图片控件或者...

    jsp上传图片到数据库

    总之,通过JSP和相关的Java库,我们可以实现一个用户友好的图片上传功能,将图片保存在服务器并将其数据存储到数据库中。这样的功能在很多Web应用中都很常见,如在线相册、社交网络等。理解并掌握这一过程对于任何...

    struts1上传图片,保存数据库,再显示jsp页面

    - 使用JSP页面展示图片,可以使用`<img>`标签,其`src`属性指向一个Servlet,Servlet负责从数据库中获取图片数据并输出到响应流中。 8. **安全考虑**: - 防止文件上传攻击,例如拒绝上传非图片文件或恶意脚本。 ...

    php图片上传并保存到数据库然后打印出来

    这个项目实现了一个基本的图片上传功能,将图片保存到服务器的特定文件夹,同时将图片的路径和标题存储到MySQL数据库中,以便后续在需要的地方输出或展示图片。以下是关于这个项目的详细知识点: 1. **PHP文件上传*...

    struts2+jdbc实现图片的存储与显示(图片存储在数据库内)

    在本项目"struts2+jdbc实现图片的存储与显示(图片存储在数据库内)"中,我们将探讨如何结合这两个技术来处理图片数据,将图片存储到数据库内,并从数据库中检索以供显示。 首先,我们需要了解在数据库中存储图片的...

    Android不需要文件存储权限将文件保存至手机

    6. **清除缓存**:在Android中,应用可以清理自己的缓存数据,这通常包括临时文件和数据库记录,以释放存储空间。尽管清理缓存可能需要读写权限,但系统通常允许应用在自己的缓存目录下进行此操作,而无需请求用户...

    C# 数据库图片转PDF存储

    从数据库中提取的图片通常是以二进制数据的形式存储,需要先写入到临时文件夹,以便进行后续处理。C#提供了System.IO命名空间,可以用来创建、读取和删除文件。 4. **PDF转换**: 将图片转换为PDF文件,项目可能...

    把图片上传到数据库中ASP网站开发实例 安徽机电职业技术学院 陈伟

    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 ...

    Hibernate将图片插入数据库

    4. **查询与显示图片**: 要从数据库中检索图片,我们可以使用`Query`或`Criteria` API。获取到结果后,将其转换回图片并显示。注意,由于二进制数据通常不适合直接在网页上展示,所以可能需要将其写入临时文件,再...

    保存下载Access图片

    - 将该数据赋值给PictureBox的Picture属性,或者将其保存到临时文件,然后使用标准的图像处理控件加载显示。 **注意事项:** - 存储图片可能会显著增加数据库大小,所以要考虑空间利用率和性能。 - OLE对象链接的...

    不用数据库就可以用留言(php做的)

    4. **使用帮助.url**:这是一个快捷方式文件,链接到一个外部的使用帮助页面,用户可以点击打开获取更详尽的操作指南。 5. **face**:这个名字可能是图片或表情库的文件夹,用于在留言中插入或选择表情,增加互动性...

    ASP.NET MVC实现图片上传、图片预览显示

    - 文件处理包括将文件数据保存到数据库中,典型的存储方式包括二进制数据或者文件路径的存储。本文指出,文件数据被保存为数据流到数据库中。 2. 数据库设计 - 需要创建一个表来存储图片信息,例如命名为[dbo]....

Global site tag (gtag.js) - Google Analytics