我想从Java Swift应用程序中保存图像在MySQL数据库中。我正在使用JFileChsoser来获取图像的路径。然后转换文件,以便它可以保存在BLOB类型的MySQL列中。但是我试图保存的每张图片都不能正确保存或正确转换。有人能告诉我我在这里做错了什么吗?在Java中保存图像从Java
private void btn_choosepicActionPerformed(java.awt.event.ActionEvent evt) {
JFileChooser picchooser = new JFileChooser();
picchooser.setDialogTitle("Select Image");
picchooser.showOpenDialog(null);
File pic=picchooser.getSelectedFile();
path= pic.getAbsolutePath();
txt_path.setText(path.replace('\\','/'));
try{
File image = new File(path);
FileInputStream fis = new FileInputStream(image);
ByteArrayOutputStream baos= new ByteArrayOutputStream();
byte[] buff = new byte[1024];
for(int readNum; (readNum=fis.read(buff)) !=-1 ;){
baos.write(buff,0,readNum);
}
userimage=baos.toByteArray();
}
catch(Exception e){
JOptionPane.showMessageDialog(null, e);
}
}
然后在这之后,我把它保存到数据库中,就像这样。
private void btn_saveActionPerformed(java.awt.event.ActionEvent evt) {
String user= txt_username.getText();
try{
String sql="insert into imgtst (username,image) values ('"+user+"','"+userimage+"')";
pst=con.prepareStatement(sql);
pst.executeUpdate();
JOptionPane.showMessageDialog(null, "Saved");
}
catch(Exception e){
JOptionPane.showMessageDialog(null, e);
}
}
,我已经声明的变量userimage和路径作为一个全局变量
String path=null;
byte[] userimage=null;
这不是一个很好的做法,店面形象,在MySQL数据库中的BLOB。您应该先将该文件(本例为图像)复制到应用程序文件夹,然后将该图像的路径存储在数据库中,而不是图像作为BLOB。 – dzeno 2013-02-23 01:39:11
不要在DB中存储图像。请将它们放在一个文件夹中,并将路径存储在数据库中。 – Amarnath 2013-02-23 01:45:31
@dzeno我正在为大学做一个项目。我按照你刚刚讲的方式做了确切的方式。但一位心灵的朋友坚持将图像存储在MySQL数据库中。所以才帮她出去。 – 2013-02-23 02:00:09