comm-upload 多文件上传重名 文件丢失问题
package example;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import javax.servlet.ServletException;
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.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
/**
* 上传servlet
*
* @author Administrator
*
*/
public class Upload extends HttpServlet {
public Upload() {
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
DiskFileItemFactory factory = new DiskFileItemFactory();
String path = getServletContext().getRealPath("/") + "upload/";// 取得站台文件夹路径
factory.setRepository(new File(path));
factory.setSizeThreshold(2 * 1024 * 1024);
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("utf-8");
try {
List<FileItem> list = upload.parseRequest(request);
for (FileItem item : list) {
if (item.isFormField()) { // 如果是表单域,不是文件域
String name = item.getFieldName();
String value = item.getString("UTF-8");
} else {
String name = item.getFieldName();// 取得文件域的名称(name)
String value = item.getName();// (表单值)
if (!"".equals(value)) {// 文件域不为空的上传
String fileName = getFileName(value);// 传入值取得文件名
String fileType = getExt(fileName);// 取得后缀
String fileNewName = String.valueOf(System
.currentTimeMillis())
+ "." + fileType;// 以时间命名
System.out.println("文件名 : " + fileName);
System.out.println("文件类型 : " + fileType);
// Thread.sleep(200);//这里停下时间,问题解决,但感觉不好!!
File saveFile = new File(path, fileNewName);
// File saveFile = new File(path, fileName);
item.write(saveFile);
}
}
}
} catch (FileUploadException e) {
System.out.println("文件上传出错" + e.getMessage());
e.printStackTrace();
} catch (Exception e) {
System.out.println("写入硬盘出错" + e.getMessage());
e.printStackTrace();
}
response.getWriter().print("Upload OK!");
}
/**
* 取得文件名
*
* @param fieldValue
* @return
*/
private String getFileName(String fieldValue) {
int fileNameIndex = fieldValue.lastIndexOf("\\");// 最后斜杠的位置
String fieldName = fieldValue.substring(fileNameIndex + 1);
return fieldName;
}
/**
* 取得文件后缀
*
* @param fileName
* @return
*/
private String getExt(String fileName) {
String type = fileName.substring(fileName.lastIndexOf(".") + 1);
return type;
}
}
相关推荐
大厂Python自动化测试面试题合集
题目:函数的作用是什么?调用函数的语法?答案:将独立功能代码封装成模块,复用代码;函数名(实参)。题目:函数 return 作用是什么?无 return 时函数返回什么?多返回值底层是什么类型?答案:返回函数执行结果;无 return 默认返回 None;return x,y,z 底层自动封装为元组。题目:函数四大参数类型分别是什么?定义顺序要求?答案:必选参数、默认参数、可变位置 * args、命名关键字、可变关键字 **kwargs;顺序:必选→默认→*args→命名关键字→**kwargs。
高校及科研院所如何利用外部数据完善技术转移转化机制.docx
科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。
完全复现虚拟同步发电机VSG自适应惯量阻尼控制仿真、根轨迹、调节系数对比(Simulink仿真、Matlab代码实现)
内容概要:本文档围绕“【完全复现】虚拟同步发电机VSG自适应惯量阻尼控制仿真、根轨迹、调节系数对比”这一主题,利用Simulink和Matlab平台,系统性地实现了虚拟同步发电机(VSG)的自适应惯量与阻尼控制策略的建模与仿真。内容涵盖VSG的核心控制原理、系统动态响应特性分析、根轨迹绘制以及在不同调节系数下的性能对比研究,旨在深入剖析关键控制参数对系统稳定性与动态性能的影响机制,为新能源并网系统中提升频率支撑能力和暂态稳定性的控制策略设计提供理论依据和技术支持。; 适合人群:具备扎实的电力系统分析与自动控制理论基础,熟练掌握Matlab/Simulink仿真工具,主要从事新能源发电、微电网运行、电力电子变换器控制或电力系统稳定研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①开展虚拟同步发电机(VSG)的建模与先进控制策略的深入研究;②探究自适应惯量与阻尼控制对改善电网频率响应速度和平抑功率波动的作用机理;③运用根轨迹法进行系统稳定性分析,并指导控制器参数的优化整定;④完成高水平学术论文撰写或科研项目申报所需的仿真复现实验。; 阅读建议:本资源以“完全复现”为核心目标,提供了完整的仿真模型与配套代码。使用者应在深入理解同步发电机转子运动方程、虚拟惯量及阻尼物理意义的基础上,结合电力系统暂态稳定理论,逐步操作并调试仿真模型,尤其需关注不同调节系数变化对系统动态性能指标(如超调量、调节时间)的影响,从而深化对VSG内在控制机制与稳定边界的认知。
员工满意度数据集(11列,12000 条记录)CSV 合成
详情介绍:该 HR 员工数据集含 12,000 条 ×11 列(满意度、绩效评估、项目数、月均工时、司龄、工伤、福利包、晋升、部门、薪资),无缺失值但无离职标签列,且存在数据质量问题(141 条负绩效评估、144 条负工时、49.4% 异常高工伤率、项目数仅 0/1/2),疑似经过修改或合成,不能直接做经典的员工离职预测,适合做满意度回归、薪资三分类、晋升预测或员工聚类分析,使用前必须清洗异常值并注意数据真实性限制。
科技服务机构如何通过数据服务增强市场竞争力?.docx
科技服务机构如何通过数据服务增强市场竞争力?


Web 开发
