我想使用Java applet将图像存储到MySQL数据库中,或者在运行时用户将加载图像。
我该怎么做?
请帮帮我。是否需要使用任何特殊的基于Java的MySQL,或者MySQL是否只需要加载BLOB图像内容?如果可能的话,给我一些代码示例,并提一下如何为此目的将MySQL加载到我的计算机上。
执行此操作后,我想将mysql中的图像显示在网页上。
真的有可能吗?
怎么做?
答案 0 :(得分:5)
你不应该在MySQL中存储图像。 MySQL不是为了存储BLOBs
而设计的,如果你这样做会受到严重的性能下降。
您可以而且应该在本地文件服务器或远程服务器(如Amazon S3)上存储指向图像的指针。
如果你真的想在我发出警告的情况下这样做,你可以找到一些sample code here,尽管在那里会彻底讨论自我相同的警告。
答案 1 :(得分:0)
您可以在java中使用setBinaryStream()
将图像存储到mysql的 blob 数据类型列
File image = new File("C:/image.jpg");
PrepareStatement psmnt = connection.prepareStatement
("insert into save_image(image) "+ "values(?)");
FileInputStream fis = new FileInputStream(image);
psmnt.setBinaryStream(3, (InputStream)fis, (int)(image.length()));
/* executeUpdate() method execute specified sql query. Here this query
insert data and image */
int s = psmnt.executeUpdate();
答案 2 :(得分:0)
try {
File image = new File("C:/honda.jpg");
inputStream = new FileInputStream(image);
connection = getConnection();
statement = connection
.prepareStatement("insert into trn_imgs(img_title, img_data) "
+ "values(?,?)");
statement.setString(1, "Honda Car");
statement.setBinaryStream(2, (InputStream) inputStream,
(int) (image.length()));
statement.executeUpdate();
} catch (FileNotFoundException e) {
System.out.println("FileNotFoundException: - " + e);
} catch (SQLException e) {
System.out.println("SQLException: - " + e);
}
答案 3 :(得分:0)
正如Josh Smith建议你不要在MySQL中使用BLOB或LONGBLOB存储图像。因为它会对您的表现产生巨大影响,您可以通过following this method来完成。 而不是将图像直接存储到数据库中,而是将图像位置存储在数据库中。在比较这两个选项时,将数据存储在数据库中是安全的,以确保安全。缺点是
在db中存储图像文件位置具有以下优点。