怎么把图片存入mysql_如何把图片存储到mysql数据库中

因为项目需求,必须要把图片存储到mysql数据库中.

首先 mysql数据库中的表 test 字段 photo 字段的类型是 mediumblob

执行插入数据的时候报: MySql.Data.MySqlClient.MySqlException: 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

意思是sql语句不对!语法错误!

麻烦各位大侠帮帮忙,真的很急.谢谢了.困扰 很久了.一直找不到出点,所以才来找大家的!!!

---------------------------操作数据库的方法开始---------------------------

public static void AddPhoto(byte[] image)

{

//建立数据库连接

MySqlConnection conn = new MySqlConnection("server=127.0.0.1;user id=root;password=FLUser;database=banklgs");

conn.Open();

//设置命令参数

string insertStr = "insert into test(photo) values(?photo)";

MySqlCommand comm = new MySqlCommand();

comm.Connection = conn;

comm.CommandText = insertStr;

comm.CommandType = CommandType.Text;

//设置数据库字段类型MediumBlob的值为图片字节数组imageByte

MySqlParameter paraPhoto = new MySqlParameter("?photo", MySqlDbType.MediumBlob);

paraPhoto.Value = image;

comm.Parameters.Add(paraPhoto);

//执行命令

try

{

comm.ExecuteNonQuery();

}

catch (Exception ex)

{

ex.ToString();

}

}

---------------------------操作数据库的方法结束---------------------------

用的是 PictureBox 控件!

---------------------------将图片转换为byte的地方开始---------------------------

private void photoPictureBox_DoubleClick(object sender, EventArgs e)

{

Stream photoStream = null;

if (openFileDialog1.ShowDialog() == DialogResult.OK)

{

try

{

string pathName = openFileDialog1.FileName;

if ((photoStream = openFileDialog1.OpenFile()) != null)

{

using (photoStream)

{

if (photoStream.Length > 50 * 1024)//文件不应大于50K

{

this.infoPanel1.ShowInfo(InfoPanel.TipType.ERROR, "文件大小不超过50K");

return;

}

//将图像读入到字节数组

byte[] buffByte = new byte[photoStream.Length];

int ret = photoStream.Read(buffByte, 0, (int)photoStream.Length);

this.photo = buffByte;

Image image = Image.FromStream(photoStream, true);

Image imgPhoto = image;

if (buffByte.Length > 15000)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以将图片以二进制的形式存入 Mysql 数据库。以下是一个简单的 Spring Boot Controller 的示例代码: ```java @RestController public class ImageController { @Autowired private ImageRepository imageRepository; @PostMapping("/image/upload") public String uploadImage(@RequestParam("file") MultipartFile file) throws IOException { Image image = new Image(); image.setName(file.getOriginalFilename()); image.setType(file.getContentType()); image.setPicByte(file.getBytes()); imageRepository.save(image); return "Image uploaded successfully!"; } @GetMapping("/image/{id}") public ResponseEntity<byte[]> getImage(@PathVariable Long id) { Image image = imageRepository.findById(id).orElse(null); if (image == null) { return ResponseEntity.notFound().build(); } return ResponseEntity.ok().contentType(MediaType.parseMediaType(image.getType())) .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + image.getName() + "\"") .body(image.getPicByte()); } } ``` 其,Image 实体类包括名称、类型和二进制数据三个字段,用于保存图片相关信息: ```java @Entity @Table(name = "images") public class Image { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private String type; @Lob private byte[] picByte; // getters and setters } ``` 在上述代码,uploadImage 方法用于上传图片,将图片转换为二进制数据并保存到 Mysql 数据库;getImage 方法用于获取指定 id 的图片数据并返回给客户端。 需要注意的是,由于图片数据是以二进制形式存储数据库,因此在存储和读取图片时需要使用 Lob 注解来告知 JPA 框架该字段需要使用数据库的大字段类型(BLOB 或 CLOB)。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值