JSP中图片的上传与显示方法实例详解

下面就为大家详细讲解一下“JSP中图片的上传与显示方法实例详解”的完整攻略。

1. 确认上传的文件类型

在上传图片前,我们需要确认上传的文件类型,以防止一些不合法的文件被上传。可以通过以下代码片段实现:

String fileName = fileItem.getName();
String extName = fileName.substring(fileName.lastIndexOf(".")+1);
if (extName.equals("jpg") || extName.equals("jpeg") || extName.equals("gif") || extName.equals("png")) {
    // 文件类型合法
} else {
    // 文件类型不合法
}

2. 将图片上传到服务器

在文件类型确认后,我们需要将图片上传到服务器。可以通过以下代码片段实现:

// 获取上传路径
String path = getServletContext().getRealPath("/upload");
// 创建上传路径目录
File uploadDir = new File(path);
if (!uploadDir.exists()) {
    uploadDir.mkdirs();
}
// 创建File对象,接收上传的文件
File uploadFile = new File(path + "/" + fileName);
// 写入文件
fileItem.write(uploadFile);
// 释放资源
fileItem.delete();

3. 显示上传的图片

在图片上传到服务器后,我们需要将其显示在网页上。可以通过以下代码片段实现:

<img src="<%=request.getContextPath()%>/upload/<%=fileName%>" alt="上传的图片">

示例1:上传一张图片并显示

以下示例演示了如何上传一张图片并显示:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*,org.apache.commons.fileupload.*,org.apache.commons.fileupload.disk.*" %>
<%@ page import="org.apache.commons.fileupload.servlet.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>上传图片</title>
</head>
<body>
    <form action="upload.jsp" method="post"
        enctype="multipart/form-data">
        请选择您要上传的文件:<input type="hidden" name="MAX_FILE_SIZE"
            value="1048576"> <input type="file" name="upfile"><br> <br> <input
            type="submit" value="上传图片">
    </form>
</body>
</html>

在upload.jsp文件中,我们可以通过以下代码片段实现图片上传和显示:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*,org.apache.commons.fileupload.*,org.apache.commons.fileupload.disk.*" %>
<%@ page import="org.apache.commons.fileupload.servlet.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>上传图片</title>
</head>
<body>
    <%
        // 获取上传目录
        String path = getServletContext().getRealPath("/upload");
        // 获取文件上传器
        DiskFileItemFactory factory = new DiskFileItemFactory();
        ServletFileUpload upload = new ServletFileUpload(factory);

        String fileName = "";
        try {
            // 解析request
            List<FileItem> items = upload.parseRequest(request);
            for (FileItem item : items) {
                // 判断是否是上传组件
                if (item.isFormField()) {
                    continue;
                }
                // 获取上传文件名
                fileName = item.getName();
                // 确认上传文件类型
                String extName = fileName.substring(fileName.lastIndexOf(".")+1);
                if (extName.equals("jpg") || extName.equals("jpeg") || extName.equals("gif") || extName.equals("png")) {
                    // 创建上传目录
                    File uploadDir = new File(path);
                    if (!uploadDir.exists()) {
                        uploadDir.mkdirs();
                    }
                    // 上传文件
                    File uploadFile = new File(path + "/" + fileName);
                    item.write(uploadFile);
                    item.delete();
                } else {
                    out.println("<script>alert('只允许上传jpg、png、gif格式的图片!');history.back();</script>");
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            out.println("上传失败!");
        }
    %>

    <img src="<%=request.getContextPath()%>/upload/<%=fileName%>" alt="上传的图片">
</body>
</html>

示例2:上传多张图片并显示

以下示例演示了如何上传多张图片并显示:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*,org.apache.commons.fileupload.*,org.apache.commons.fileupload.disk.*" %>
<%@ page import="org.apache.commons.fileupload.servlet.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>上传多张图片</title>
</head>
<body>
    <form action="upload.jsp" method="post"
        enctype="multipart/form-data">
        请选择您要上传的文件:<input type="hidden" name="MAX_FILE_SIZE"
            value="1048576"> <input type="file" name="upfile"><br> <br> 请选择您要上传的文件:<input type="hidden" name="MAX_FILE_SIZE"
            value="1048576"> <input type="file" name="upfile"><br> <br> <input
            type="submit" value="上传图片">
    </form>
</body>
</html>

在upload.jsp文件中,我们可以通过以下代码片段实现多张图片上传和显示:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*,org.apache.commons.fileupload.*,org.apache.commons.fileupload.disk.*" %>
<%@ page import="org.apache.commons.fileupload.servlet.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>上传多张图片</title>
</head>
<body>
    <%
        // 获取上传目录
        String path = getServletContext().getRealPath("/upload");
        // 获取文件上传器
        DiskFileItemFactory factory = new DiskFileItemFactory();
        ServletFileUpload upload = new ServletFileUpload(factory);

        String[] fileNames = new String[2];
        int i = 0;
        try {
            // 解析request
            List<FileItem> items = upload.parseRequest(request);
            for (FileItem item : items) {
                // 判断是否是上传组件
                if (item.isFormField()) {
                    continue;
                }
                // 获取上传文件名
                String fileName = item.getName();
                // 确认上传文件类型
                String extName = fileName.substring(fileName.lastIndexOf(".")+1);
                if (extName.equals("jpg") || extName.equals("jpeg") || extName.equals("gif") || extName.equals("png")) {
                    // 创建上传目录
                    File uploadDir = new File(path);
                    if (!uploadDir.exists()) {
                        uploadDir.mkdirs();
                    }
                    // 上传文件
                    File uploadFile = new File(path + "/" + fileName);
                    item.write(uploadFile);
                    item.delete();
                    fileNames[i++] = fileName;
                } else {
                    out.println("<script>alert('只允许上传jpg、png、gif格式的图片!');history.back();</script>");
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            out.println("上传失败!");
        }
    %>

    <img src="<%=request.getContextPath()%>/upload/<%=fileNames[0]%>" alt="上传的图片1">
    <img src="<%=request.getContextPath()%>/upload/<%=fileNames[1]%>" alt="上传的图片2">
</body>
</html>

通过以上两个示例,我们可以详细了解到JSP中图片的上传与显示方法实例,希望可以对大家有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JSP中图片的上传与显示方法实例详解 - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • Spring Boot+微信小程序开发平台保存微信登录者的个人信息

    这里提供一份完整的“Spring Boot + 微信小程序开发平台保存微信登录者的个人信息”的攻略,下面将分为以下几个方面进行讲解。 1. 小程序登录流程 在小程序中,用户登录的流程如下: 用户进入小程序,点击登录按钮。 微信端会弹出授权窗口,提示用户是否授权小程序登录。 用户点击同意授权后,微信将会返回一个 code 值给小程序端。 小程序端通过 code…

    Java 2023年6月3日
    00
  • 闲言碎语-逐步了解Spring

    当我们开始学习 Spring 的时候,我们经常会被各种概念和组件迷惑。为了逐步了解 Spring,以下是一些基本步骤: 1. 了解Spring的核心概念 在学习 Spring 之前,需要先了解 Spring 的基础概念。以下是一些常见的 Spring 核心概念: 依赖注入(Dependency Injection,DI) 依赖注入是 Spring 框架的核心…

    Java 2023年5月19日
    00
  • java读写二进制文件的解决方法

    JAVA是一种跨平台的编程语言,可以很好地处理二进制文件,本文将介绍在JAVA中读写二进制文件的解决方法。 一、什么是二进制文件 二进制文件是一种特殊类型的计算机文件,其存储格式是二进制的编码,包含了计算机能够读取和使用的信息。二进制文件可以存储各种形式的数据,包括图像、音频、视频、字体等。因为它们是以编程语言可读的方式编写的,二进制文件可以通过计算机程序进…

    Java 2023年5月20日
    00
  • Java字节码中jvm实例用法

    Java字节码是Java源代码被编译后的中间产物,是一种针对Java虚拟机(JVM)执行的二进制格式。Java程序在运行前,需要使用Java编译器进行编译,得到对应的.class字节码文件,然后再由JVM将字节码文件解释执行。 Java字节码中包含了JVM实例的相关信息,这些信息可以用于分析和调试Java应用程序。下面是一些常用的Java字节码中JVM实例的…

    Java 2023年5月23日
    00
  • Java ArrayList add(int index, E element)和set(int index, E element)两个方法的说明

    Java ArrayList是一种动态数组,可以添加、删除、修改、访问其中的元素。其中,add(int index, E element)和set(int index, E element)两个方法是用于修改ArrayList中指定位置元素的方法。 add(int index, E element)方法 方法说明 add(int index, E eleme…

    Java 2023年5月26日
    00
  • Java的Struts框架中标签的使用方法

    下面是详细讲解Java Struts框架中<results>标签的使用方法的攻略。 Struts框架中的results标签 在Struts框架中,标签用于指定Action执行后的返回结果。results标签位于Action的配置文件中。它定义了Action的返回结果并将结果映射到JSP或其他视图组件或响应类型。 一个Struts Action可以…

    Java 2023年5月20日
    00
  • maven中心仓库OSSRH使用简介(推荐)

    Maven中心仓库OSSRH使用简介(推荐) 如果你是一位Maven项目的开发者,那么你一定会遇到需要将你的项目打包上传到Maven中央仓库的情况。Maven中央仓库是Maven项目的官方仓库,大多数的第三方依赖库都可以在Maven中央仓库上找到。然而,如果你是一个独立的开发者或者组织,你不一定能够将你的项目上传到Maven中央仓库,那么你需要寻找其他的Ma…

    Java 2023年5月19日
    00
  • 关于微信小程序获取小程序码并接受buffer流保存为图片的方法

    关于微信小程序获取小程序码并接受buffer流保存为图片的方法可以分为以下几步: 创建 API 方法 在小程序中,我们可以通过wx-api创建必要的API方法。这不仅可以帮助我们更好地组织代码,还可以使代码更具可读性和可维护性。 function getMiniProgramCode (path, width, callback) { wx.api.requ…

    Java 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部