【问题标题】:How do I make a JSP page to upload an image to a MySQL database?如何制作 JSP 页面以将图像上传到 MySQL 数据库?
【发布时间】:2017-11-19 04:37:17
【问题描述】:

我有一个用 JSP 编写的 Web 项目,其中有几个用于后端的 Java 类。我想创建一个页面,用户上传图像并将其保存在数据库中。

我有一个用户上传图片的页面,表单如下:

<form action="UploadImage.jsp" method="post" enctype="multipart/form-data">
<input type="file" name="file" accept="image/*">
<input type="submit" name="submit" value="Upload Image">

我想让我的 UploadImage.jsp 文件将此图像保存到 MySQL 数据库中的 LongBLOB 对象。我尝试使用 request.getParameter() 和 request.getPart(),但它们都返回 null,并且任何尝试使用这些都会导致 NullPointerException。

我尝试过在线查找,但所有解决方案都涉及使用 servlet,而不是 JSP 页面。是的,我知道使用 JSP 不是最佳实践,但就本项目而言,这是我必须使用的。

【问题讨论】:

  • 您真的不想将图像直接存储在 MySQL 数据库中。最好保存图像的路径,并在需要时加载图像。
  • 否则我会将图像存储在哪里?我在网上看到多个答案都这么说,但我不知道有什么其他的方法。
  • 那么,你有一个为这些jsp服务的网络服务器,对吗?在那里您可以创建一个包含图像的文件夹,然后存储图像的名称或完整路径。
  • @SnazzyWolf 是的,我看到了,但不幸的是,它使用 servlet 而不是 JSP 进行上传。

标签: java mysql jsp servlets file-upload


【解决方案1】:

您可以使用 ServletFileUpload 类来解析请求并将多个文件(在您的情况下为图像)上传到服务器上的临时目录,然后您只需将文件的位置作为路径存储在数据库中。

ServletContext context = pageContext.getServletContext();    
String filePath = "c:\\apache-tomcat\\webapps\\images\\";

DiskFileItemFactory factory = new DiskFileItemFactory();      
factory.setRepository(new File("c:\\temp"));
ServletFileUpload uploader = new ServletFileUpload(factory);

try { 
    List files = upload.parseRequest(request);
    Iterator<FileItem> iter = fileItems.iterator();

    while (iter.hasNext()) {
        FileItem file = iter.next();            
        File serverFile = new File(filePath + 
            file.getName().substring(fileName.lastIndexOf("\\")));            
        file.write(serverFile);
    }
} catch(Exception ex) {
    System.out.println(ex);
}

【讨论】:

  • 自己还没有测试过!但只是为了演示它是如何工作的。
【解决方案2】:

你必须使用

部分 p=request.getpart("file");

输入流是=p.getinputstream(p);

byte[] b=Ioutils.getBytes(is);

然后你可以使用Setbytes来存储在mysql中

您还在类名之前在您的 servlet 上声明了多部分注释

【讨论】:

    猜你喜欢
    • 2013-03-27
    • 2018-08-10
    • 1970-01-01
    • 1970-01-01
    • 2012-08-27
    • 2014-09-15
    • 1970-01-01
    • 2016-07-21
    • 1970-01-01
    相关资源
    最近更新 更多