`

Servlet 上传文件流到Mysql

    博客分类:
  • JAVA
阅读更多
Mysql数据库建表语句:

CREATE TABLE `photo` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `title` varchar(100) NOT NULL,

  `image` blob NOT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1







//DBClassMysql.java  自己添加mysql的java驱动,要不会报错的

package com.abin.upload.image;



import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.Statement;



public final class DBClassMysql {

//Mysql

private static String driver="com.mysql.jdbc.Driver";

private static String url="jdbc:mysql://localhost:3306/test";

private static String user="root";

private static String password="";


public DBClassMysql ()throws ClassNotFoundException{


}


//Mysql

public static Connection getMysql(){

Connection conn=null;

try{

if(null==conn||conn.isClosed()){

Class.forName(driver).newInstance();

conn=DriverManager.getConnection(url,user,password);

}

}catch(Exception e){

e.printStackTrace();

throw new RuntimeException(e);

}

return conn;

}

}



//ImageServlet.java  保存文件流的servlet
package com.abin.upload.image;



import java.io.IOException;

import java.io.InputStream;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.util.Iterator;

import java.util.List;



import javax.servlet.ServletConfig;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;



import org.apache.commons.fileupload.FileItem;

import org.apache.commons.fileupload.disk.DiskFileItemFactory;

import org.apache.commons.fileupload.servlet.ServletFileUpload;



public class ImageServlet extends HttpServlet {



public void init(ServletConfig config) throws ServletException {

super.init(config);

}



public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

super.doPost(request, response);

}



public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

Connection conn = null;

PreparedStatement ps=null;

String title = null;

int imageLength = 0;

byte[] buffer = new byte[imageLength];



InputStream in = null;

int total = 0;

int once = 0;

DiskFileItemFactory factory = new DiskFileItemFactory();

ServletFileUpload file = new ServletFileUpload(factory);

try {

List lst = file.parseRequest(request);

Iterator it = lst.iterator();

while (it.hasNext()) {

FileItem fileItem = (FileItem) it.next();

if (fileItem.isFormField()) {

title = fileItem.getString("UTF-8");

System.out.println("表单数据的名称是:" + fileItem.getFieldName()

+ ":表单的内容是:" + fileItem.getString("UTF-8"));

} else {

if (fileItem.getName() != null

&& !fileItem.getName().equals("")) {

imageLength = Integer.parseInt(String.valueOf(fileItem

.getSize()));

in = fileItem.getInputStream();

System.out.println("上传文件的名称:" + fileItem.getName());

System.out.println("上传文件的大小:" + fileItem.getSize());

System.out.println("上传文件的类型:"

+ fileItem.getContentType());

System.out.println("上传文件的类型:"

+ fileItem.getInputStream());

}

String sql="insert into photo (title,image) values (?,?)";

conn=DBClassMysql.getMysql();

ps=conn.prepareStatement(sql);

ps.setString(1, title);

ps.setBinaryStream(2, in,in.available());

ps.executeUpdate();


}



}

request.getSession().setAttribute("message", "operate success.");

request.getRequestDispatcher("message.jsp").forward(request, response);

} catch (Exception e) {

// TODO: handle exception

e.printStackTrace();

}finally{

try {

if(ps!=null){

ps.close();

}

if(conn!=null){

conn.close();

}

} catch (Exception e) {

e.printStackTrace();

}


}



}



public void destroy() {

super.destroy();

}



}




//web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">



<servlet>

<servlet-name>ImageServlet</servlet-name>

<servlet-class>com.abin.upload.image.ImageServlet</servlet-class>

</servlet>



<servlet-mapping>

<servlet-name>ImageServlet</servlet-name>

<url-pattern>/ImageServlet</url-pattern>

</servlet-mapping>



<welcome-file-list>

<welcome-file>index.jsp</welcome-file>

</welcome-file-list>

</web-app>



//message.jsp WebRoot下面
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

    <title>servlet upload</title>

  </head>

 

  <body>

   <%=session.getAttribute("message") %>

  </body>

</html>










//index.jsp  WebRoot下面

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

    <title>servlet upload</title>

  </head>

 

  <body>

   <form method="post" action="ImageServlet" enctype="multipart/form-data">

   标题:<br/>

   <input name="title" type="text" /><br/>

   请选择您要上传的图片:<br/>

   <input name="myimage" type="file" /><br/>

   <input type="submit" value="提交" />

   <input type="reset" value="重置" />

  

   </form>

  </body>

</html>

分享到:
评论

相关推荐

    jsp+servlet+mysql实现文件上传功能

    文件上传是Web应用程序中常见的需求,它允许用户上传文件到服务器并存储在数据库中。这里我们将讲解关键的技术点、步骤以及注意事项。 首先,我们从JSP(JavaServer Pages)开始。JSP是Java的一个动态网页技术,...

    servlet+JSP+mysql实现文件上传的方法

    这意味着,上传文件时必须将表单的enctype设置为multipart/form-data,并且使用post方法提交数据。 在servlet+JSP的场景下,实现文件上传通常会用到Apache Commons FileUpload库,这是一个强大的开源工具,用于处理...

    使用servlet,jsp实现Excel文件的上传和数据库的导入

    这个场景中,我们将讨论如何使用Servlet和JSP来实现在Java Web应用中完成Excel文件的上传,并将其数据导入到MySQL数据库。Servlet是Java中用于处理HTTP请求的服务器端组件,而JSP则是一种动态网页技术,它们结合使用...

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

    总结来说,Java结合MySQL进行图片的上传和下载,涉及到文件流的读写、数据库连接、SQL操作以及异常处理等技术。这个例子提供了一个基础的实现,但在实际项目中,可能需要考虑更多因素,如错误处理、多线程、文件大小...

    struts+spring+hibernate(mysql)用户登录及文件上传

    至于文件上传,通常会涉及到Servlet和文件流处理。在Struts中,可以通过自定义Interceptor或Action来处理文件上传请求。文件会被临时存储在服务器的某个目录,然后通过Spring的Service层进行业务处理,如检查文件...

    Servlet上传页面图片 并存入Mysql数据库

    2. **硬盘文件项工厂(DiskFileItemFactory)**:FileItemFactory接口的实现类,用于配置临时存储上传文件的位置和大小限制。在示例中,创建了`DiskFileItemFactory`实例,用于处理文件上传的临时存储。 3. **文件项...

    mysql+servlet+jsp的简易crm实现

    部署时,将应用打包成WAR文件,上传至支持Servlet和JSP的Web服务器(如Tomcat)。 以上就是基于MySQL、Servlet和JSP的简易CRM实现所涉及的关键知识点。理解并掌握这些技术,可以为开发更复杂的Web应用打下坚实基础...

    文件上传下载(jsp+mysql)

    在这个系统中,用户可以选择本地的文件进行上传,服务器接收到文件后将其存储到特定的服务器目录,例如"upload",并可能通过数据库(如MySQL)来管理这些文件的信息。用户可以通过同样的Web界面请求下载已上传的文件...

    文件管理系统(jsp+servlet+mysql)

    然后将文本内容读取出来存入到MySQL数据库中,当需要下载是,系统会从数据库中读取字符串内容然后生成下载到本地,实现的功能有:登陆,注册,管理员管理用户界面(冻结,解冻,注销),管理员管理文件界面(删除,...

    文件的上传和下载(JSP+Mysql)

    使用`HttpServletRequest`对象的`getPart()`方法获取上传的文件部分,然后将文件内容保存到MySQL数据库。 3. **文件存储**:将文件内容写入数据库时,可以使用`PreparedStatement`来执行SQL插入语句,将文件的二...

    jsp,servlet ,mysql 完成的整删改查

    综上所述,这个项目展示了如何使用JSP和Servlet进行Web开发,通过MySQL存储和管理数据,并实现CRUD操作和文件上传功能,这些都是构建一个基本的Web应用系统所必需的关键技术。通过深入理解和实践这些技术,开发者...

    JSP + MySQL+Servlet+JavaBean 实现图片上传

    通常,图片上传的过程包括用户在JSP页面上选择文件,通过表单提交到Servlet,Servlet解析请求,读取文件内容,然后将文件内容转化为Blob对象,最后使用JavaBean将Blob对象与相关元数据一起存入MySQL数据库。...

    JSP+servlet,网盘系统,mysql.zip

    2. **文件上传**:用户选择本地文件后,通过Servlet处理文件上传,将其保存到服务器的特定目录,并在数据库中记录文件元数据。 3. **文件下载**:根据文件ID或URL,Servlet查找并提供文件下载服务。 4. **文件管理**...

    echarts+Servlet+mysql从数据库获取数据实现简单图表展示

    用Servlet实现的echarts展示两种不同形式图表的小demo,使用的开发工具是eclipse,...(ps:本人在另一个上传的文件中实现了用SSM框架实现的echarts展示图表的小demo,使用的数据库也是mysql,感兴趣的可以去看看)。

    基于JSP+Java+mysql文件上传与下载

    项目类型:Java web项目 项目名称:基于JSP+Servlet的文件上传与...项目简介:本系统主要演示文件的单个上传、多文件上传到数据库里面、以及文件下载,通过此案例,你将JSP+Servlet技术掌握文件上传与下载的技能。

Global site tag (gtag.js) - Google Analytics