JAVA上传文件到数据库
前端代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> < html > < head > <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> < meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> < title >在此处插入标题</ title > </ head > < body >< br > <!--enctype="multipart/form-date" 该属性用于服务文件上传--> < form action="upload.do" method="post" enctype="multipart/form-data"> < p >Upload your song in MP3 format:</ p > < input type="file" name="file" />< br /> < input type="submit" value="Upload" /> </ form > </ body > </ html > |
后台代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | package demo; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; import javax.servlet.ServletException; import javax.servlet.annotation.MultipartConfig; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.Part; /** * Servlet implementation class UP */ @MultipartConfig @WebServlet ( "/upload.do" ) public class UP extends HttpServlet { private static final long serialVersionUID = 1L; /** * 从part对象里,解析出文件名 * @param part * @return */ private String getFilename(Part part) { String header = part.getHeader( "content-disposition" ); String filename = header.substring(header.indexOf( "filename=\"" )+ 10 ,header.lastIndexOf( "\"" )); return filename; } public UP() { super (); // TODO Auto-generated constructor stub } /** * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response) */ protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Part part = request.getPart( "file" ); //获取上传的文件对象 saveToDb(part); //调用方法保存文件到数据库 } private void saveToDb(Part part) { InputStream in = null ; //初始化一个输入流对象 String filename = getFilename(part); //调用方法获取文件名 try { in = part.getInputStream(); //获取文件输入流 } catch (IOException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } String url = "jdbc:mysql://149.129.112.161:3306/shop?useUnicode=true&characterEncoding=utf-8" ; String user= "shop" ; String password= "999999" ; try { Class.forName( "com.mysql.jdbc.Driver" ); } catch (ClassNotFoundException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } try { Connection connection = DriverManager.getConnection(url,user,password); String sql = "insert into bigtb (name,images) values(?,?) " ; PreparedStatement statement = connection.prepareStatement(sql); statement.setString( 1 , filename); //设置文件名 statement.setBinaryStream( 2 , in); //设置输入流 statement.executeUpdate(); //处理sql语句 statement.close(); } catch (SQLException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
2018-05-17 DOM事件监听器
2018-05-17 传统DOM事件处理程序
2018-05-17 HTML事件处理程序