21xrx.com
2024-09-19 09:32:39 Thursday
登录
文章检索 我的文章 写文章
Java实现图片上传并保存到服务器指定路径
2023-06-15 16:13:57 深夜i     --     --
Java 图片上传 服务器保存路径

在当前的互联网时代,图片上传功能已经成为了大多数网站或应用的必备功能。本文将介绍如何使用Java实现图片上传,以及如何将上传的图片保存到服务器指定路径。

一、前端实现

在前端实现图片上传功能,需要一个表单,并对表单进行一些设置。其中必须将表单的enctype属性设置为multipart/form-data,这意味着表单中的数据包含文件。同时表单中必须设置一个type为file的input元素,用于选择要上传的文件。

  

  

二、后端实现

在后端实现图片上传功能,需要使用Java提供的一些API。在Java中,实现文件上传通常使用commons-fileupload和commons-io这两个类库,需要在项目中引入这两个类库。

在后端代码中,首先需要对前端提交的表单进行解析,获取上传的文件。然后通过流的方式将文件保存到指定的服务器路径。

package com.example.controller;

import java.io.File;

import java.io.IOException;

import java.io.InputStream;

import java.io.PrintWriter;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;

import org.apache.commons.fileupload.disk.DiskFileItemFactory;

import org.apache.commons.fileupload.servlet.ServletFileUpload;

import org.apache.commons.io.FileUtils;

@WebServlet("/upload")

public class UploadServlet extends HttpServlet {

  private static final long serialVersionUID = 1L;

  // 上传文件存储目录

  private static final String UPLOAD_DIRECTORY = "upload";

  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {

    // 设置请求编码

    request.setCharacterEncoding("UTF-8");

    // 设置响应编码

    response.setContentType("text/html; charset=UTF-8");

    // 获取文件上传服务器路径

    String filePath = getServletContext().getRealPath("/") + UPLOAD_DIRECTORY;

    // 判断目录是否存在

    File uploadDir = new File(filePath);

    if (!uploadDir.exists()) {

      uploadDir.mkdir();

    }

    // 文件上传处理工厂

    DiskFileItemFactory factory = new DiskFileItemFactory();

    // 设置内存临界值

    factory.setSizeThreshold(1024 * 1024 * 3);

    // 设置临时文件存储位置

    factory.setRepository(new File(System.getProperty("java.io.tmpdir")));

    // 文件上传处理器

    ServletFileUpload upload = new ServletFileUpload(factory);

    // 设置文件的最大值

    upload.setFileSizeMax(1024 * 1024 * 40);

    // 设置请求的最大值

    upload.setSizeMax(1024 * 1024 * 50);

    // 中文处理

    upload.setHeaderEncoding("UTF-8");

    // 解析请求的内容提取文件数据

    try {

      // 获取上传的文件列表

      @SuppressWarnings("unchecked")

      java.util.List fileItems = upload.parseRequest(request);

      // 遍历文件列表

      for (FileItem fileItem : fileItems) {

        // 判断当前项是否为一个表单字段

        if (fileItem.isFormField()) {

          // 处理普通的表单字段

          String name = fileItem.getFieldName();

          String value = fileItem.getString("UTF-8");

          System.out.println(name + ": " + value);

        } else {

          // 处理上传的文件

          String name = fileItem.getName();

          if (name != null && !name.equals("")) {

            // 保存文件到指定的路径

            File file = new File(filePath, name);

            FileUtils.copyInputStreamToFile(fileItem.getInputStream(), file);

          }

        }

      }

      // 文件上传成功

      PrintWriter out = response.getWriter();

      out.println("文件上传成功!");

    } catch (Exception e) {

      // 文件上传失败

      PrintWriter out = response.getWriter();

      out.println("文件上传失败!");

      e.printStackTrace();

    }

  }

}

三、测试上传

在前端代码和后端代码均实现后,即可进行文件上传的测试。将上传的文件保存路径设定为 /upload 目录下,上传成功后,文件即可保存到这个目录下。

四、关键词

Java、图片上传、服务器保存路径

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复