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; } }