Java+mysql本地图片上传数据库及下载示例

发布时间 - 2026-01-10 22:46:56    点击率:

做一个将本地图片上传到mysql数据库的小实例,顺便也下载下来到桌面检测是否上传成功。

在写代码之前得先在数据库中建立image表,用来存储图片。

create table image 
(id int primary key auto_increment , 
 name varchar(30) COMMENT '名称', 
 content mediumblob COMMENT '图片');

下面直接上代码:

package jdbc_imagetest;

import java.io.*;
import java.sql.*;
/**
 * 将本地文件的图片传到数据库的test的image表中并下载到本机桌面
 */
public class Test1 {

  private static String url="jdbc:mysql://localhost:3306/test";
  private static String user="root";
  private static String password="123456";
  private static Connection con;

  public static void main(String[] args) throws Exception {
    Class.forName("com.mysql.jdbc.Driver");
    con=DriverManager.getConnection(url,user,password);
    shangchuan();
    xiazai();    
  }
  //添加图片到数据库test4的file表
  public static void shangchuan() throws Exception{
    String sql="insert into image(name,content) values(?,?)";
    PreparedStatement ptmt=con.prepareStatement(sql);
    ptmt.setString(1, "|美女|.jpg");
    InputStream is=null;
    is=new FileInputStream("D:\\Pictures\\3.jpg");
    ptmt.setBinaryStream(2, is,is.available());
    //方法说明:PreparedStatement.setBinaryStream(int parameterIndex, InputStream x, int length)
    ptmt.execute();
    System.out.println("图片添加成功!");

  }
  //从数据库中把图片下载至桌面
  public static void xiazai() throws Exception{
    String sql="select content from image where id=3";//在我这里3.jpg是第三张图片
    Statement stmt=con.createStatement();
    ResultSet rs=stmt.executeQuery(sql);//将查询结果给rs
    if(rs.next()){
      InputStream is=rs.getBinaryStream("fcontent");
      //.getBinaryStream():a Java input stream that delivers the database column value as a stream of uninterpreted bytes
      FileOutputStream fos=new FileOutputStream("C:\\Users\\Desktop\\|美女|.jpg");
      byte[] buffer=new byte[1024];
      int len=0;
      while((len=is.read(buffer))!=-1){
        fos.write(buffer,0,len);//将数据库的图片写出
      }
      System.out.println("下载成功!已下载至桌面,请查看");
    }else{
      System.out.println("图片不存在!");
    }
    con.close();
  }


}

测试成功

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# java上传文件到数据库  # java文件上传下载示例  # Java实现用Mysql存取图片操作实例  # Java+MySql图片数据保存与读取的具体实例  # Java连接mysql数据库代码实例程序  # Java连接Mysql 8.0.18版本的方法详解  # java连接mysql数据库实现单条插入和批量插入  # java实现批量导入.csv文件到mysql数据库  # JavaWeb JDBC + MySql 通讯录实现简单的增删改查功能案例详解  # 如何基于java向mysql数据库中存取图片  # 在我  # 不存在  # 做一个  # 本机  # 先在  # 数据库中  # 查询结果  # 请查看  # 大家多多  # 中把  # 图片上传  # 第三张  # 上传  # String  # static  # url  # localhost  # jdbc  # private  # read 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 中山网站推广排名,中山信息港登录入口?  如何在IIS7中新建站点?详细步骤解析  laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法  如何在云主机上快速搭建多站点网站?  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  JS去除重复并统计数量的实现方法  北京网站制作的公司有哪些,北京白云观官方网站?  Laravel如何使用withoutEvents方法临时禁用模型事件  Android 常见的图片加载框架详细介绍  深圳网站制作的公司有哪些,dido官方网站?  如何快速生成ASP一键建站模板并优化安全性?  Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】  Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程  JavaScript Ajax实现异步通信  北京网站制作公司哪家好一点,北京租房网站有哪些?  太平洋网站制作公司,网络用语太平洋是什么意思?  如何在香港免费服务器上快速搭建网站?  Android GridView 滑动条设置一直显示状态(推荐)  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  大型企业网站制作流程,做网站需要注册公司吗?  如何选择可靠的免备案建站服务器?  Laravel如何创建自定义Facades?(详细步骤)  zabbix利用python脚本发送报警邮件的方法  如何在宝塔面板中修改默认建站目录?  nginx修改上传文件大小限制的方法  Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】  Python进程池调度策略_任务分发说明【指导】  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例  如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体  如何为不同团队 ID 动态生成多个“认领值班”按钮  Laravel如何升级到最新版本?(升级指南和步骤)  如何快速查询网站的真实建站时间?  Laravel如何优化应用性能?(缓存和优化命令)  Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】  实现点击下箭头变上箭头来回切换的两种方法【推荐】  Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优  高性能网站服务器部署指南:稳定运行与安全配置优化方案  标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南  高防服务器租用指南:配置选择与快速部署攻略  html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】  如何在万网主机上快速搭建网站?  如何有效防御Web建站篡改攻击?  C语言设计一个闪闪的圣诞树  Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)  Android自定义listview布局实现上拉加载下拉刷新功能  Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】  网站制作软件有哪些,制图软件有哪些?  如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】