首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Hibernate将图像保存到mysql数据库

如何使用Hibernate将图像保存到mysql数据库
EN

Stack Overflow用户
提问于 2015-01-07 13:04:12
回答 2查看 2.1K关注 0票数 0

我正在做一个项目,其中我需要上传大量的图片,但我不知道图片上传的实际过程。我使用的是没有Spring MVC的Hibernate 3。所有页面都是JSP页面。主要问题是如何从请求中获取图像并将其保存到数据库中。我已经解析了请求并获得了所有参数值,这些参数值都是表单字段。我应该怎么处理图片文件??

EN

回答 2

Stack Overflow用户

发布于 2015-01-07 13:10:09

要将图像保存到数据库中,需要在MySQL中将表列定义为blob数据类型,或在其他数据库中定义等效的二进制类型。在Hibernate端,您可以声明一个字节数组变量来存储图像数据。

票数 0
EN

Stack Overflow用户

发布于 2018-12-17 13:41:16

首先你需要下载以下文件:-

1) commons-fileupload-1.3.3

2) commons-fileupload-1.3.3-javadoc

3) commons-fileupload-1.3.3-source

4) commons-fileupload-1.3.3-test

5) commons-fileupload-1.3.3-test-source

6) commons-io-2.5

7) commons-io-2.5-javadoc

和hibernate jar文件

您还必须设置项目的路径,以便在web浏览器上显示图像:-

右键单击项目->属性-> copy full location -> open web.xml

web.xml

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>imghib</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <context-param> 
   <description>Location to store uploaded file</description> 
   <param-name>file-upload</param-name> 
   <param-value>
      C:\Users\mohammed lala\mdlala\imghib\webContent\
   </param-value> 
</context-param>
</web-app>

index.html

代码语言:javascript
运行
复制
 <html>
       <head>
          <title>File Uploading Form</title>
       </head>

       <body>
          <h3>File Upload:</h3>
          Select a file to upload: <br />
          <form action = "UploadServlet.jsp" method = "post"
             enctype = "multipart/form-data">
             <input type = "file" name = "file" size = "50" />
             <br />
             <input type = "submit" value = "Upload File" />
          </form>
       </body>
    </html>

UploadServlet.jsp

代码语言:javascript
运行
复制
<%@page import="org.hibernate.cfg.AnnotationConfiguration"%>
    <%@page import="img.Image"%>
    <%@page import="org.hibernate.Transaction"%>
    <%@page import="org.hibernate.Session"%>
    <%@ page import = "java.io.*,java.util.*, javax.servlet.*" %>
    <%@ page import = "javax.servlet.http.*" %>
    <%@ page import = "org.apache.commons.fileupload.*" %>
    <%@ page import = "org.apache.commons.fileupload.disk.*" %>
    <%@ page import = "org.apache.commons.fileupload.servlet.*" %>
    <%@ page import = "org.apache.commons.io.output.*" %>

    <%
        Session s=new AnnotationConfiguration().configure().buildSessionFactory().openSession();
        Transaction tx=s.beginTransaction();
       File file ;
       int maxFileSize = 5000 * 1024;
       int maxMemSize = 5000 * 1024;
       ServletContext context = pageContext.getServletContext();
       String filePath = context.getInitParameter("file-upload");

       // Verify the content type
       String contentType = request.getContentType();

       if ((contentType.indexOf("multipart/form-data") >= 0)) {
          DiskFileItemFactory factory = new DiskFileItemFactory();
          // maximum size that will be stored in memory
          factory.setSizeThreshold(maxMemSize);

          // Location to save data that is larger than maxMemSize.
          factory.setRepository(new File("c:\\temp"));

          // Create a new file upload handler
          ServletFileUpload upload = new ServletFileUpload(factory);

          // maximum file size to be uploaded.
          upload.setSizeMax( maxFileSize );

          try { 
             // Parse the request to get file items.
             List fileItems = upload.parseRequest(request);

             // Process the uploaded file items
             Iterator i = fileItems.iterator();

             out.println("<html>");
             out.println("<head>");
             out.println("<title>JSP File upload</title>");  
             out.println("</head>");
             out.println("<body>");

             while ( i.hasNext () ) {
                FileItem fi = (FileItem)i.next();
                if ( !fi.isFormField () ) {
                   // Get the uploaded file parameters
                   String fieldName = fi.getFieldName();
                   String fileName = fi.getName();
                   boolean isInMemory = fi.isInMemory();
                   long sizeInBytes = fi.getSize();

                   // Write the file
                   if( fileName.lastIndexOf("\\") >= 0 ) {
                      file = new File( filePath + 
                      fileName.substring( fileName.lastIndexOf("\\"))) ;
                   } else {
                      file = new File( filePath + 
                      fileName.substring(fileName.lastIndexOf("\\")+1)) ;
                   }
                   fi.write( file ) ;
                   out.println("Uploaded Filename: " + filePath + 
                   fileName + "<br>");
                   Image ig=new Image();
                   ig.setFileName(fileName);
                   s.saveOrUpdate(ig);
                   tx.commit();
                   s.close();
                   response.sendRedirect("show.jsp?name="+fileName+" ");
                }
             }
             out.println("</body>");
             out.println("</html>");
          } catch(Exception ex) {
             System.out.println(ex);
          }
       } else {
          out.println("<html>");
          out.println("<head>");
          out.println("<title>Servlet upload</title>");  
          out.println("</head>");
          out.println("<body>");
          out.println("<p>No file uploaded</p>"); 
          out.println("</body>");
          out.println("</html>");
       }
    %>

show.jsp

代码语言:javascript
运行
复制
 <%
    String name=request.getParameter("name");
    out.print(name);
    %>
    <img src="<%=name %>">

Image.java

代码语言:javascript
运行
复制
package img;

    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
    import javax.persistence.Table;

    @Entity
    @Table(name="image")
    public class Image {
        @Id
        @GeneratedValue
        private int id;
        private String fileName;
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getFileName() {
            return fileName;
        }

        public void setFileName(String fileName) {
            this.fileName = fileName;
        }
    }

hibernate.cfg.xml

代码语言:javascript
运行
复制
 <?xml version='1.0' encoding='UTF-8'?>
    <!DOCTYPE hibernate-configuration PUBLIC
              "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
              "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

    <hibernate-configuration>
    <session-factory>
        <property name="connection.url">
            jdbc:mysql://localhost:3306/db_name
        </property>
        <property name="connection.username">root</property>
        <property name="connection.password">scott</property>
        <property name="connection.driver_class">
            com.mysql.jdbc.Driver
        </property>
        <property name="dialect">
            org.hibernate.dialect.MySQLDialect
        </property>
         <property name="hbm2ddl.auto">update</property>


         <mapping class="img.Image"></mapping>
    </session-factory>
    </hibernate-configuration>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27812714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档