AJAX 文件上传进度条 JAVA

news/2025/3/6 23:43:10/

=======JSP文件 

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>AJAX 文件上传进度条</title><style>#smallrainContainer {width: 300px;border: 1px solid red ;margin-top: 10px;}#smallrainBar {height: 20px;background-color: blue;width: 0%;}</style>
</head>
<body>
<h3>AJAX 文件上传进度条</h3><h3>请选择较大的文件进度条才看的清楚</h3><input type="file" id="smallrainInput" name="smallrainInput"><div id="smallrainContainer"><div id="smallrainBar"></div></div><button onclick="uploadFile()">上传文件</button><script>function uploadFile() {const fileInput = document.getElementById('smallrainInput');const file = fileInput.files[0];if (!file) {alert('请选择要上传的文件');return;}const formData = new FormData();formData.append('smallrainfileInput', file);const xhr = new XMLHttpRequest();xhr.open('POST', 'smallRainAJAXUpload', true);xhr.upload.addEventListener('progress', function (event) {if (event.lengthComputable) {const percentComplete = (event.loaded / event.total) * 100;const progressBar = document.getElementById('smallrainBar');progressBar.style.width = percentComplete + '%';}});xhr.onload = function () {if (xhr.status === 200) {alert('文件上传成功');} else {alert('文件上传失败');}};xhr.send(formData);}</script>
</body></html>

======JAVA文件

 

java">package org.rain.ajax;import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;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("/smallRainAJAXUpload")
@MultipartConfig()
public class MulAJAXUpload extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setCharacterEncoding("UTF-8");PrintWriter out = response.getWriter();String shead = new String("<head> <meta http-equiv=\"content-type\" content=\"text/html;charset=utf-8\"> </head>");out.println("<html>");out.print(shead);out.println("您访问的路径不存在,非法访问");out.println("</body>");out.println("</html>");}protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String savePath = "C:/SmallRian";boolean hasFile = false;try {File fileSaveDir = new File(savePath);if (!fileSaveDir.exists()) {fileSaveDir.mkdir();}Part filePart = request.getPart("smallrainfileInput");String fileName = filePart.getSubmittedFileName();String localFile = savePath + "/" + fileName;if (null != fileName && fileName.length() > 0 && filePart.getSize() > 0) {filePart.write(localFile);hasFile = true;} else {hasFile = false;}} catch (IOException e) {response.sendError(500);throw new ServletException("没有上传成功", e);}}}


http://www.ppmy.cn/news/1577209.html

相关文章

OpenMCU(一):STM32F407 FreeRTOS移植

概述 本文主要描述了STM32F407移植FreeRTOS的简要步骤。移植描述过程中&#xff0c;忽略了Keil软件的部分使用技巧。默认读者熟练使用Keil软件。本文的描述是基于OpenMCU_FreeRTOS这个工程&#xff0c;该工程已经下载放好了移植stm32f407 FreeRTOS的所有文件 OpenMCU_FreeRTOS工…

vue3中Element-plus table 反选 禁用实战

在 Vue 3 中使用 Element Plus 的 el-table 组件实现反选和禁用某些行的功能&#xff0c;可以通过以下步骤实现&#xff1a; 1. 安装 Element Plus 首先&#xff0c;确保你已经安装了 Element Plus&#xff1a; npm install element-plus2. 引入 Element Plus 组件 在你的 …

MySQL创建外键失败

问题描述 我有两张表&#xff0c;它们的结构分别是&#xff1a; contens表&#xff1a; content_version表&#xff1a; 其中&#xff0c;content_version表字段content_id想要创建content表的外键 但是&#xff1a; 明明两个字段的类型、长度、是否为空都设置的一模一样&am…

H20半精度推理报错:Floating point exception (core dumped)

Nvidia H20 显卡在执行bf16&#xff0c;f16推理时程序异常中断 时间是 2025年3月4日 课题组新到的8卡H20服务器在使用过程中&#xff0c;torch加载模型进行bf16的推理时&#xff0c;出现Floating point exception (core dumped)错误 当时一头雾水&#xff0c;后来苦苦寻找&…

DApp开发从入门到精通:以太坊/Solana公链生态实战解析

在区块链技术的推动下&#xff0c;去中心化应用&#xff08;DApp&#xff09;逐渐摆脱传统中心化后台的依赖&#xff0c;转向以智能合约为核心的全合约化开发模式。这种模式通过区块链网络的分布式特性&#xff0c;实现了数据存储、业务逻辑与用户交互的完全去中心化。 一、全合…

力扣-动态规划-516 最长回文子序列

思路 dp数组定义&#xff1a;[i, j]的字符串的最长回文子序列长度为dp[i][j]递推公式&#xff1a;相等时&#xff0c;子序列2 || ij时赋值1&#xff1b; 不相等时&#xff0c;两个去掉首、去掉尾取最长dp数组初始化&#xff1a;都为0遍历顺序&#xff1a;从下往上&#xff0c;…

【第16节】C++设计模式(行为模式)-Observer(观察者)模式

一、问题背景 观察者模式&#xff08;Observer Pattern&#xff09;是应用最广泛的设计模式之一&#xff0c;尤其是在实现 **Model/View/Controller (MVC)** 架构时&#xff0c;观察者模式起到了核心作用。MVC 架构通过将业务逻辑&#xff08;Model&#xff09;、用户界面&…

VBA信息获取与处理第五节:如何在单个工作表中查找某个给定值

《VBA信息获取与处理》教程(版权10178984)是我推出第六套教程&#xff0c;目前已经是第一版修订了。这套教程定位于最高级&#xff0c;是学完初级&#xff0c;中级后的教程。这部教程给大家讲解的内容有&#xff1a;跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互…