在数据库中处理image字段【把图片存储到数据库并显示出来】

方法简介:

 

保存图片

  1. 将图片将图片转换成byte[],并得到MIME类
    注:
            string mime = FileUpload1.PostedFile.ContentType;//获取MIME类型
            byte[] data = FileUpload1.FileBytes;//转换成byte[],在此方法有很多,不再一一列举
           
  2. 以参数化形式(参数化SQL语句或者存储过程)保存到数据库
    注:
           string sql = "insert into FileList(FileData,Mime)values(@FileData,@Mime)";
          

                    SqlParameter[] parameters = new SqlParameter[4];

                    parameters[0] = new SqlParameter("@FileData", SqlDbType.Image, int.MaxValue);
                    parameters[0].Value = data ;

                    parameters[1] = new SqlParameter("@Mime", SqlDbType.NVarChar, 50);
                    parameters[1].Value = mime ;

显示图片

  1. 将字段数据转换成byte[]   //把image字段强制转换即可
  2. 以byte[]构造MemoryStream
  3. 以MemoryStream在内存中构造图象

显示图片中2、3步的代码实例如下:

        //data 为数据库中转换过来的byte[]数组
        //mime为string类型的MIME类型

        //在得到byte[]和MIME类形后

        Response.Clear();//清空所有输出
        Response.ContentType = mime;//设置MIME为图象对应的MIME
        //因为不存在直接将byte[]转换成图象的方法
        //所以利用byte[]来构建内存流对象
        MemoryStream memoryStream = new MemoryStream(data);
        //利用流对象构建Bitmap对象
        Bitmap image = new System.Drawing.Bitmap(memoryStream);
        //将Bitmap保存到Response对象的输出流当中
        image.Save(Response.OutputStream, ImageFormat.Jpeg);
        image.Dispose();//释放Bitmap对象
        Response.End();


注:

可把用dyte[]转换成图片的代码单独放在一个aspx页面的后台代码块中,在需要显示图片的位置设置<img>元素的src属性指向该byte[]成图片的页面即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
图片存储在文件系统,并在数据库保存图片的路径是更好的方法,因为这样可以减轻数据库的负担,并且将来也更容易管理和维护。 以下是一个示例代码: ```java // 读取图片文件 File file = new File("image.jpg"); // 生成新的文件名,避免文件名冲突 String newFileName = UUID.randomUUID().toString() + "." + FilenameUtils.getExtension(file.getName()); // 将图片保存到文件系统 File newFile = new File("/path/to/save/images/" + newFileName); FileUtils.copyFile(file, newFile); // 将图片路径存储数据库 String imagePath = "/path/to/save/images/" + newFileName; Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "username", "password"); PreparedStatement statement = conn.prepareStatement("INSERT INTO images (image_path) VALUES (?)"); statement.setString(1, imagePath); statement.executeUpdate(); // 关闭连接 statement.close(); conn.close(); ``` 在上面的示例代码,我们首先读取了一个图片文件,然后生成了一个新的文件名,以避免文件名冲突。接着,我们将图片保存到了文件系统的指定目录下,并使用Apache Commons IO工具类的copyFile方法来完成文件的复制。然后,我们将图片路径存储到了数据库image_path字段。 需要注意的是,文件系统的路径需要根据实际情况进行调整,并且需要确保保存图片的目录具有足够的权限来进行写操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值