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.pswp.cn/bicheng/72240.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/72240.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/72240.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2025最新Flask學習筆記(對照Django做解析)

前言&#xff1a;如果還沒學Django的同學&#xff0c;可以看Django 教程 | 菜鳥教程&#xff0c;也可以忽略下文所提及的Django內容&#xff1b;另外&#xff0c;由于我們接手的項目大多都是前后端分離的項目&#xff0c;所以本文會跳過對模板的介紹&#xff0c;感興趣的朋友可…

自然語言處理NLP入門 -- 第十一節NLP 實戰項目 3: 文本摘要

1. 為啥需要文本摘要&#xff1f; 還記得小時候我們要寫“讀后感”或“觀后感”嗎&#xff1f;看完一篇長長的文章、一本書&#xff0c;甚至一部電影后&#xff0c;老師總是要我們用幾句話概括主要內容。其實&#xff0c;這就跟文本摘要的核心思路一樣——把那些最有價值、最能…

算法day4 dfs搜索2題

一 糖果 我們看這個藍橋A組真題 首先我們看這個題目說有M種的糖果&#xff0c;K顆一包&#xff0c;N包糖果 第一行就是輸入M&#xff0c;K&#xff0c;N的數量 后面就是輸入每個糖果在每包里面的種類 然后問我們最少要用幾包糖果才可以把所有種類的糖果都吃一遍 如果不可以吃完…

【MySQL】窗口函數詳解(概念+練習+實戰)

文章目錄 前言1. SQL窗口函數 1.1 窗口函數概念1.2 窗口函數語法1.3 常見窗口函數 1.3.1 聚合窗口函數1.3.2 專用窗口函數 1.4 窗口函數性能比較 2. LeetCode 例題 2.1 LeetCode SQL 178&#xff1a;分數排名2.2 LeetCode SQL 184&#xff1a;最高工資2.3 LeetCode SQL 185&am…

【Ai】--- DeepSeek-r1 如何選擇適合自己的版本(超詳細)

在編程的藝術世界里&#xff0c;代碼和靈感需要尋找到最佳的交融點&#xff0c;才能打造出令人為之驚嘆的作品。而在這座秋知葉i博客的殿堂里&#xff0c;我們將共同追尋這種完美結合&#xff0c;為未來的世界留下屬于我們的獨特印記。 【Ai】--- DeepSeek-r1 如何選擇適合自己…

植物大戰僵尸金鏟鏟版 v1.1.6(windows+安卓)

游戲簡介 《植物大戰僵尸金鏟鏟版》是由“古見xzz”、“對不起賤笑了”、“是怪哉吖”等聯合開發的民間魔改版本&#xff0c;融合了原版塔防玩法與《金鏟鏟之戰》的自走棋元素&#xff0c;屬于非官方同人作品。 游戲特點 合成升星機制&#xff1a;三個相同低星植物可合成更高…

網絡空間安全(6)web應用程序技術

前言 Web應用程序技術是指用于開發和構建基于Web的應用程序的技術和工具&#xff0c;涵蓋了前端開發、后端開發、數據庫管理、安全性等多個方面的技術。 一、前端開發技術 HTML/CSS/JavaScript&#xff1a;HTML用于構建網頁結構&#xff0c;CSS用于進行樣式設計&#xff0c;Jav…

零基礎學習OpenGL(一)創建一個窗口

基于 ubuntu 系統&#xff0c;設置基礎環境。 #!/usr/bin/env bashsudo apt-get update# 安裝基礎編譯軟件 sudo apt-get -y install gcc g cmake git# 安裝編譯 glfw 依賴的軟件 sudo apt-get -y install libwayland-dev libx11-dev libxcursor-dev libxi-dev libxinerama-de…

Windows 11 下正確安裝 Docker Desktop 到 D 盤的完整教程

文章目錄 Windows 11 在 D 盤正確安裝 Docker Desktop 的完整教程**前言****準備工作****1. 手動創建 Docker 相關目錄**&#xff08;?? **這一步非常重要**&#xff0c;否則會報錯&#xff09;**2. 下載 Docker Desktop 安裝程序****3. 使用管理員權限打開終端** **安裝 Doc…

版圖自動化連接算法開發 00001 ------ 直接連接兩個給定的坐標點

版圖自動化連接算法開發 00001 ------ 直接連接兩個給定的坐標點 引言正文定義坐標點的類繪圖顯示代碼直接連接兩個坐標點引言 由于人工智能的加速普及,每次手動繪制版圖都會覺得特別繁瑣,作者本人在想可否搞一個自動化連接器件端口的算法,后期可以根據一些設定的限制進行避…

AIP-156 單例資源

編號156原文鏈接AIP-156: Singleton resources狀態批準創建日期2019-05-12更新日期2024-04-15 API有時需要表示在任意上級資源中&#xff0c;始終只存在一個實例的資源。常見的例子是配置對象。 指南 API 可以 定義 單例資源 。單例資源 必須 始終隨上級資源而存在&#xff…

程序詩篇里的靈動筆觸:指針繪就數據的夢幻藍圖(水文,勿三)

大家好啊&#xff0c;我是小象?(?ω?)? 我的博客&#xff1a;Xiao Xiangζ????? 很高興見到大家&#xff0c;希望能夠和大家一起交流學習&#xff0c;共同進步。 這一節我們來學習指針的相關知識&#xff0c;學習內存和地址&#xff0c;指針變量和地址&#xff0c;包…

【實用技巧】RAGFlow+DeepSeek搭建私人Ai助理

前言 滿血版DeepSeek雖然很好用&#xff0c;但仍然有三個主要缺陷&#xff1a; 聯網的DeepSeek無法解決數據安全問題&#xff0c;如果使用&#xff0c;數據將傳輸到其服務器&#xff0c;數據隱私性無法保證。上傳的文件存在限制&#xff0c;無法解決有多個文件的問題。回答的…

Storm實時流式計算系統(全解)——中

storm編程的基本概念-topo-spout-bolt 例如下&#xff1a; storm 編程接口-spout的結構及組件實現 storm編程案例-spout組件-實現 這是我的第一個組件&#xff08;spout組件繼承BaseRichSput&#xff09;所有重寫內部的三個方法&#xff0c;用于接收數據&#xff08;這里數據是…

【tplink】校園網接路由器如何單獨登錄自己的賬號,wan-lan和lan-lan區別

老式路由器TPLINK&#xff0c;接入校園網后一人登錄&#xff0c;所有人都能通過連接此路由器上網&#xff0c;無法解決遂上網搜索&#xff0c;無果&#xff0c;幸而偶然看到一個帖子說要把信號源網線接入路由器lan口&#xff0c;開啟新世界。 一、wan-lan&#xff0c;lan-lan區…

Qt常用控件之旋鈕QDial

旋鈕QDial QDial 表示一個旋鈕控件。 1. QDial屬性 屬性說明value當前數值。minimum最小值。maximum最大值。singleStep按下方向鍵時改變的步長。pageStep按下 pageUp/pageDown 的時候改變的步長。sliderPosition界面上旋鈕顯示的初始位置。tracking外觀是否會跟蹤數值變化&…

微服務筆記 2025/2/15

微服務是一種軟件架構風格&#xff0c;它是以專注于單一職責的很多小型項目為基礎&#xff0c;組合出復雜的大型應用。 微服務是一種架構。 微服務是一種架構。 微服務是一種架構。 以前自己做項目最常用的架構是單體架構。單體項目不適合開發大型項目。 學習微服務技術來解…

7-1JVMCG垃圾回收

一、GC的作用與原理 ?核心功能? 自動識別并回收堆內存中不再被引用的對象&#xff0c;釋放內存空間。 避免手動管理內存的復雜性&#xff08;如C/C中的delete/free操作&#xff09;&#xff0c;降低內存泄漏風險。 ?判斷對象可回收的方法? ?可達性分析算法&#xff1a;…

yunedit-post ,api測試比postman更好

postman應該是大家最熟悉的api測試軟件了&#xff0c;但是由于它是外國軟件&#xff0c;使用它的高端功能注冊和繳費都比較麻煩。生成在線文檔分享也經常無法訪問被攔截掉。 這里可以推薦一下yunedit-post&#xff0c;該有的功能都有。 https://www.yunedit.com/postdetail …

010 rocketmq批量消息

文章目錄 批量消息BatchProducer.javaBatchConsumer.java 批量消息 批量發送可以提?發送性能&#xff0c;但有?定的限制&#xff1a; topic 相同 waitStoreMsgOK 相同 &#xff08;?先我們建設消息的iswaitstoremsgoktrue(默認為true), 如果沒有異常,我們將始終收到"O…