java web图片上传和文件上传实例

下面是关于“Java Web文件上传和图片上传实例”的攻略及示例。

一、文件上传和图片上传的区别

文件上传和图片上传本质上类似,都是将本地文件上传到服务器的某个文件夹中。但是,图片上传还需要进行图片预览和显示操作,所以相较于文件上传,图片上传多了一些处理操作。

二、Java Web实现文件上传和图片上传

在Java Web中,文件上传和图片上传的核心是使用MultipartRequest类解析HTTP请求。MultipartRequest类提供了解析HTTP请求的便利方法,可以从HTTP请求中提取出POST请求中的各个参数。

下面分别给出文件上传和图片上传的实现思路和部分示例代码。

2.1 文件上传

文件上传一般会用到Java Web中的javax.servlet包中的Part类和javax.servlet.http包中的HttpServletRequest类。

实现思路:

  1. 在HTML表单中添加一个input标签,type为“file”;
  2. 在Java Servlet中通过HttpServletRequest获取到上传的文件;
  3. 使用Part对象获取上传的文件的内容;
  4. 将上传的文件存储到指定位置。

下面是一个简单的文件上传示例:

HTML代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>文件上传示例</title>
</head>
<body>
<form action="fileupload" method="POST" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" value="提交">
</form>
</body>
</html>

Servlet代码:

@WebServlet("/fileupload")
@MultipartConfig
public class FileUploadServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Part filePart = request.getPart("file");
        String fileName = filePart.getSubmittedFileName();
        String fileSavePath = request.getServletContext().getRealPath("/WEB-INF/uploads/" + fileName);
        filePart.write(fileSavePath);
    }
}

2.2 图片上传

图片上传相较于文件上传,还需要多进行图片预览和显示操作。为了实现图片预览和显示,我们可以使用一些前端框架或者JavaScript库。这里我们以JQuery为例,给出一个简单的图片上传示例。

HTML代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>图片上传示例</title>
    <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
</head>
<body>
<form enctype="multipart/form-data">
    <input id="file-input" type="file" name="file">
    <img id="preview" src="" alt="" width="200px" height="200px">
    <input id="file-upload-button" type="button" value="上传">
</form>

<script>
    $(document).ready(function () {

        // 预览图片
        $("#file-input").change(function () {
            var reader = new FileReader();
            reader.onload = function (e) {
                $("#preview").attr("src", e.target.result);
            };
            reader.readAsDataURL(this.files[0]);
        });

        // 上传图片
        $("#file-upload-button").click(function () {
            var formData = new FormData();
            formData.append("file", $("#file-input")[0].files[0]);
            $.ajax({
                url: "imageupload",
                type: "POST",
                data: formData,
                processData: false,
                contentType: false,
                success: function (result) {
                    alert("上传成功!");
                }
            })
        });
    });
</script>
</body>
</html>

Servlet代码:

@WebServlet("/imageupload")
@MultipartConfig
public class ImageUploadServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Part filePart = request.getPart("file");
        String fileName = filePart.getSubmittedFileName();
        String fileSavePath = request.getServletContext().getRealPath("/WEB-INF/uploads/" + fileName);
        filePart.write(fileSavePath);
    }
}

需要注意的是,本示例中图片的上传与文件的上传是完全相同的,唯一的区别在于前端使用了JQuery实现了图片的预览和显示。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java web图片上传和文件上传实例 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • Java如何利用Mybatis进行数据权限控制详解

    Java如何利用Mybatis进行数据权限控制详解 什么是数据权限控制 数据权限控制是指通过安全管理机制,对不同用户或用户组授权不同的数据操作权限,从而控制这些用户或用户组在访问企业数据资源时的范围和强度。 Mybatis数据权限控制的实现过程 首先,在Mybatis中配置Interceptor拦截器来实现数据权限控制,Interceptor是用来拦截SQL…

    Java 2023年5月20日
    00
  • 浅谈JDK8中的Duration Period和ChronoUnit

    下面我将详细讲解一下关于“浅谈JDK8中的Duration Period和ChronoUnit”的攻略。 什么是Duration和Period? 在Java8中,Duration和Period是两个时间间隔的类。它们可以用于各种时间操作,比如计算两个日期之间的差异,计算一个操作的持续时间等。 Duration类 Duration类表示时间上的持续时间,它可以…

    Java 2023年5月20日
    00
  • 聊聊maven与jdk版本对应关系

    聊聊maven与jdk版本对应关系 Maven是Java项目在构建编译过程中的重要工具,Java开发者需要根据项目需求选择合适的版本。同时,Maven的版本也需要与Java版本对应,否则可能会导致编译、构建、打包等问题。因此,本文将介绍Maven与JDK版本对应关系的攻略,以帮助Java开发者正确选择版本。 Maven与JDK版本对应关系 以下是Maven与…

    Java 2023年5月20日
    00
  • 什么是Java缓存技术?

    Java缓存技术是指将计算机处理的结果或持久化数据存储在计算机内存中,以便更快地访问这些数据。Java缓存技术主要用于改善性能,减少应用程序请求数据的间隔时间。在Java中,常用的缓存技术包括内存缓存、文件缓存和Redis缓存等。 内存缓存 内存缓存是一种基于Java集合框架的缓存技术,它将数据存储在应用程序的内存中。内存缓存能够提供快速响应时间,但受到内存…

    Java 2023年5月11日
    00
  • Java常用排序算法及性能测试集合

    Java常用排序算法及性能测试集合 在本文中,我们将介绍Java的常用排序算法,包括它们的工作原理、实现代码和性能测试。排序算法是计算机科学中最基本的算法之一,因此深入了解排序算法有助于提高编程技能和算法能力。 常用排序算法 冒泡排序 冒泡排序是最简单,也是最容易理解的排序算法之一。它的基本思想是比较相邻的元素,如果顺序不对就交换它们,每一轮都可以将最大的值…

    Java 2023年5月19日
    00
  • 简单了解JAVA NIO

    Java NIO 简介 Java NIO即Java非阻塞式IO (Java Non-blocking I/O)。Java NIO提供了一种新的 IO工作方式和API。它比原生的Java IO(Java IO通过流的方式读取数据,而NIO则是通过通道(channel)和缓冲区(buffer)来读取数据)更加高效,也更易于扩展。虽然Java NIO比Java I…

    Java 2023年5月24日
    00
  • java解析dbf之通过javadbf包生成和读取dbf文件

    下面是“java解析dbf之通过javadbf包生成和读取dbf文件”的完整攻略,包含以下主要内容: javadbf包是什么,如何引入 生成dbf文件 读取dbf文件 1. javadbf包是什么,如何引入 javadbf包是用于处理dbf文件格式的Java库,它支持生成、读取和写入dbf文件。这个库的最新版本是2.0.0-beta,你可以在github上找…

    Java 2023年5月19日
    00
  • Spring Boot整合Kafka教程详解

    Spring Boot整合Kafka教程详解 近年来,Kafka 成为了备受关注和喜爱的消息系统,凭借其高吞吐量、低延迟的特性,成为了大型系统中消息传递和处理的首选工具。本文讲解如何在 Spring Boot 项目中整合 Kafka。 1. 添加 Maven 依赖 在 pom.xml 文件中添加以下依赖: <dependencies> <d…

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