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日

相关文章

  • MyBatisPlus超详细分析条件查询

    以下是针对“MyBatisPlus超详细分析条件查询”的完整攻略: 一、MyBatisPlus概述 MyBatisPlus是对MyBatis进行了功能扩展和优化的一款工具。其提供了更加便捷的CRUD操作、Lambda表达式查询等功能,大大提升了开发效率。 二、条件查询 MyBatisPlus提供了多种条件查询的方式,包括wrapper、Lambda以及Que…

    Java 2023年5月20日
    00
  • 常见的垃圾回收算法有哪些?

    以下是关于常见的垃圾回收算法的完整使用攻略: 常见的垃圾回收算法有哪些? 垃圾回收算法指在垃圾回收过程中,如何判断哪些内存空间是垃圾,哪些内存空间是可用的。常见的垃圾回收算法有以下几种: 1. 引用计数算法 引用计数算法是一种简单的垃圾回收算法,它通过计算每个对象被引用的次数来判断对象是否为垃圾。当一个对象的引用计数为0时,就可以将其回收。引用计数算法的优点…

    Java 2023年5月12日
    00
  • Java Spring框架的概述

    Java Spring框架是一个轻量级的应用程序框架,由许多模块组成,提供了针对企业级应用程序开发的全面支持。Spring框架采用了模块化的方法来设计,使得应用程序可以只包含其所需要的模块。此外,它还提供了面向切面编程的支持和对依赖注入的支持,这使得应用程序开发更加灵活和易于维护。 下面是几个Spring框架中最常用的模块: Core Container:包…

    Java 2023年5月19日
    00
  • Java对象的内存布局详细介绍

    Java对象的内存布局是指一个Java对象在内存中的存储方式,通常指的是其在堆内存中的存储方式。它分为三部分:对象头、实例变量和填充字节。接下来我将对Java对象内存布局进行详细的介绍。 对象头 对象头是Java对象的头部分,占据了对象的8到12个字节。对象头存储了对象的元数据信息,包含两部分:对象的Mark Word和对象的Class Pointer。在3…

    Java 2023年5月26日
    00
  • Java开发Oracle数据库连接JDBC Thin Driver 的三种方法

    下面是完整攻略: Java开发Oracle数据库连接JDBC Thin Driver 的三种方法 在Java开发中,连接数据库是一个非常重要的部分。Oracle数据库是一种非常常见的数据库,它支持多种连接方式,其中JDBC Thin Driver是一种比较常用的方式。本文将会向您介绍Java开发Oracle数据库连接JDBC Thin Driver 的三种方…

    Java 2023年5月19日
    00
  • java时间戳转日期格式的实现代码

    下面是Java时间戳转日期格式的实现代码的完整攻略。 问题背景 时间戳是指从某个固定时间(如 1970年1月1日00:00:00 UTC)起经过的毫秒数,通常用于记录某个时间点的信息。在Java开发中,我们经常需要将时间戳转换为可读的日期格式,以便于显示、存储等操作。 实现步骤 Java提供了多种方式将时间戳转化为日期格式,最常用的方式是使用SimpleDa…

    Java 2023年5月20日
    00
  • 详解Maven POM(项目对象模型)

    详解 Maven POM(项目对象模型) 什么是 Maven POM? Maven POM,即 Project Object Model,是 Maven 中的项目对象模型,它是 Maven 中的基础概念之一,对 Maven 做任何的配置都需要使用到 POM,POM 是 Maven 进行构建时的核心之一。POM 文件会定义项目的基本信息,包括但不限于: 项目组…

    Java 2023年5月20日
    00
  • java实现装饰器模式(Decorator Pattern)

    Java实现装饰器模式 装饰器模式(Decorator Pattern)是一种结构型设计模式,它允许我们动态地将行为添加到某个对象中,而不是通过继承来实现。它是在保持类方法签名不变的情况下增加功能,实现类的功能扩展。 角色介绍 Component:抽象组件,定义装饰者和被装饰者的最基本的接口和规范。 ConcreteComponent:具体组件,也是被装饰器…

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