mySQL无法存储图片

woshilan12 2012-02-25 04:29:24
开发一个通讯录,使用mySQL作为数据库,在处理人物头像时,无法把载入图片,mySQL字符集都是utf8,存储类型mediumblob
我试了两种方法,第一种是直接写路径


File file=new File("src\\image\\head.png");
FileInputStream fis=new FileInputStream(file);
ps.setBinaryStream(10, fis, (int)file.length());


第二种方法是使用filechooser选择路径




File file = new File(m.getPicturePath());
in = new FileInputStream(file);
ps.setBinaryStream(10, in, (int) file.length());

//其中m为另一个类

// getPicturePath()方法如下,就是通过文件选择器得到图片的绝对路径

JFileChooser fileChooser = new JFileChooser(); // 创建文件对话框
// 创建文件过滤
FileFilter filter = new FileNameExtensionFilter(
"图像文件(*.gif;*.jpg;*.jpeg;*.png)", "gif",
"jpg", "jpeg", "png");
fileChooser.setFileFilter(filter); // 为文件对话框设置文件过滤器
int returnValue = fileChooser.showOpenDialog(null);// 打开文件选择对话框
if (returnValue == JFileChooser.APPROVE_OPTION) { // 判断是否选择了文件
String name=fileChooser.getSelectedFile().getPath();
ImageIcon icon=new ImageIcon(name);

//等比缩放条件
int imgWidth=icon.getIconWidth();
int imgHeight=icon.getIconHeight();
int conWidth=lbl_picture.getWidth();
int conHeight=lbl_picture.getHeight();
int reImgWidth;
int reImgHeight;
if(imgWidth/imgHeight>=conWidth/conHeight){

if(imgWidth>conWidth){
reImgWidth=conWidth;
reImgHeight=imgHeight*reImgWidth/imgWidth;
}else{
reImgWidth=imgWidth;
reImgHeight=imgHeight;

}

}else{
if(imgWidth>conWidth){
reImgHeight=conHeight;
reImgWidth=imgWidth*reImgHeight/imgHeight;
}else{
reImgWidth=imgWidth;
reImgHeight=imgHeight;
}

}
File file = fileChooser.getSelectedFile(); // 获得文件对象
picturePath = file.getAbsolutePath();



运行结果You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\"?‘?O?z?xb:???XF??!?^\'_???$è“?é?·
!%?IIkHè·?-???i?·?&é?…mè????????????…' at line 1
确实是乱码,这个乱码看起来应该是路径的,因为我选择不同的图片时,这个乱码的长度不一样

现在很困惑,希望能在这里遇到高手
...全文
90 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
walkman_22 2012-03-07
  • 打赏
  • 举报
回复
一般就是使用存储路径了,然后直接定义IMG地址。BLOB太折腾。
要是搞业务的人查图片多麻烦。
冰思雨 2012-02-26
  • 打赏
  • 举报
回复
将图片保存到数据库,那要用Blob类型才行。
如果是小图片,在使用Blob的时候,可以直接将数据读取到内容。
大型图片,要通过输入输出流才可以(调用正确的重载函数,注意看API注释)
hllfl 2012-02-25
  • 打赏
  • 举报
回复
大字段存储

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧