我正在尝试从Java
swing应用程序将图像保存在MySQL数据库中。我正在使用JFileChsoser来获取图像的路径。然后,在转换文件之后,可以将其保存在BLOB类型的MySQL列中。但是我尝试保存的每张图像都无法正确保存或正确转换。有人可以告诉我我在做什么错吗?
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和path声明为全局变量
String path=null;
byte[] userimage=null;
您正在将sql语句中的byte []转换为String,最终将得到不正确的数据。
使用BLOB的正确方法是传递InputStream
自身。您可以使用FileInputStream
正在使用的文件来读取。
File image = new File(path);
FileInputStream fis = new FileInputStream ( image );
String sql="insert into imgtst (username,image) values (?, ?)";
pst=con.prepareStatement(sql);
pst.setString(1, user);
pst.setBinaryStream (2, fis, (int) file.length() );
当您检索它支持你同样可以得到InputStream
来自ResultSet
:
InputStream imgStream = resultSet.getBinaryStream(2);
问题内容: 我的客户在php + mysql中创建了一个脚本,该脚本将图像直接保存在数据库中,并且每个图像都有这样的url:www.example.com/image.php?id=421 您认为这是一个非常错误的解决方案?我应该重建所有站点吗? 每天大约有1000次访问,数据库中大约有600张图像。 问题答案: 图像文件是文件,除非有充分的理由将它们存储在数据库中,否则它们应属于文件系统,在文件
谁能指导我怎么做这件事吗? 我是一个新的android所以请,如果我能有一个详细的程序,我会很感激。
问题内容: 已关闭 。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗? 添加详细信息并通过编辑此帖子来澄清问题。 6年前关闭。 请给我查询在MySQL数据库中插入图像的查询。我是stackoverflow的新手,所以如果我的问题不符合要求,请忽略我。 问题答案: 有特定的原因为什么您不能存储对图像的引用,而不是实际图像? 图像很大,它们使数据库很大。SQL可能很痛苦(因为它不是面向对
问题内容: 我需要将图像从PHP URL保存到PC。假设我有一个页面,其中仅包含一个“花”图像,仅此而已。如何使用新名称(使用PHP)从URL中保存该图像? 问题答案: 如果您设置为: 其他使用cURL:
问题内容: 我在使用python通过urllib2请求或urllib.urlretrieve从url保存图像时遇到问题。那是图像的URL是有效的。我可以使用资源管理器手动下载它。但是,当我使用python下载图像时,无法打开该文件。我使用Mac OS预览来查看图像。谢谢! 更新: 代码如下 我要下载的图像URL是 http://site.meishij.net/r/58/25/3568808/a3
私人意图cameraIntent=null;