当前位置: 首页 > news >正文

javaweb将上传的图片保存在项目文件webapp下的upload文件夹下

  1. 前端HTML表单 (upload.html)
    首先,创建一个HTML页面,允许用户选择并上传图片。
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><title>图片上传</title>
</head>
<body><h2>上传图片</h2><form action="upload" method="post" enctype="multipart/form-data"><input type="file" name="myImage" accept="image/*" required><br><br><input type="submit" value="上传"></form>
</body>
</html>

注意:表单的method设置为"post",enctype需设置成"multipart/form-data"
2. 后端Servlet (UploadServlet.java)
接下来,创建一个Servlet来处理文件上传请求,并将上传的图片保存到webapp/load目录下。

package com.example.upload;import java.io.File;
import java.io.IOException;
import java.util.List;import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;@WebServlet("/upload")
@MultipartConfig(location = "${initParam.uploadPath}", // 上传文件的临时存储路径maxFileSize = 10 * 1024 * 1024,      // 最大文件大小 10MBmaxRequestSize = 10 * 1024 * 1024,   // 最大请求大小 10MBfileSizeThreshold = 1 * 1024 * 1024  // 文件大小阈值 1MB
)
public class UploadServlet extends HttpServlet {private static final long serialVersionUID = 1L;@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 获取上传的文件部分Part filePart = request.getPart("myImage");if (filePart == null) {response.getWriter().println("没有选择文件!");return;}// 获取文件名String fileName = getFileName(filePart);if (fileName == null || fileName.isEmpty()) {response.getWriter().println("文件名为空!");return;}// 获取webapp/load目录的实际路径String savePath = getServletContext().getRealPath("/upload") + File.separator + fileName;// 确保load目录存在File loadDir = new File(getServletContext().getRealPath("/upload"));if (!loadDir.exists()) {loadDir.mkdirs();}// 保存文件try {filePart.write(savePath);response.getWriter().println("文件上传成功!保存路径:" + savePath);} catch (IOException e) {response.getWriter().println("文件上传失败:" + e.getMessage());}}// 获取上传文件的文件名private String getFileName(Part part) {for (String content : part.getHeader("content-disposition").split(";")) {if (content.trim().startsWith("filename")) {return content.substring(content.indexOf('=') + 1).trim().replace("\"", "");}}return null;}
}

注意需添加@MultipartConfig注解

http://www.lryc.cn/news/545030.html

相关文章:

  • LabVIEW 无法播放 AVI 视频的编解码器解决方案
  • composer 错误汇总
  • MySQL锁分类
  • DeepSeek 助力 Vue3 开发:打造丝滑的悬浮按钮(Floating Action Button)
  • 认知动力学视角下的生命优化系统:多模态机器学习框架的哲学重构
  • Metal 学习笔记五:3D变换
  • unity学习56:旧版legacy和新版TMP文本输入框 InputField学习
  • 32位,算Cache地址
  • C++蓝桥杯基础篇(六)
  • React 常见面试题及答案
  • 和鲸科技推出人工智能通识课程解决方案,助力AI人才培养
  • 免费使用 DeepSeek API 教程及资源汇总
  • 网络安全-使用DeepSeek来获取sqlmap的攻击payload
  • 网络原理--TCP/IP(2)
  • Ragflow与Dify之我见:AI应用开发领域的开源框架对比分析
  • 文件上传漏洞绕过WAF
  • [含文档+PPT+源码等]精品基于Python实现的vue3+Django计算机课程资源平台
  • Qt 开源音视频框架模块之QtAV播放器实践
  • 【前端】XML,XPATH,与HTML的关系
  • ubuntu服务器安装VASP.6.4.3
  • 市场加速下跌,但监管「坚冰」正在消融
  • 7.2 - 定时器之计算脉冲宽度实验
  • Imagination DXTP GPU IP:加速游戏AI应用,全天候畅玩无阻
  • 关于流水线的理解
  • 采样算法二:去噪扩散隐式模型(DDIM)采样算法详解教程
  • 北京大学DeepSeek提示词工程与落地场景(PDF无套路免费下载)
  • Hutool - POI:让 Excel 与 Word 操作变得轻而易举
  • IDEAPyCharm安装ProxyAI(CodeGPT)插件连接DeepSeek-R1教程
  • Iceberg Catalog
  • 2025年2月个人工作生活总结