Java文件上传(基础性)
2024-09-30 16:19:11
/**
*
* 上传文件
*
*/
public class FileUploadServlet2 extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
// 1.创建磁盘文件项工厂----这里的temp为临时文件目录
String path_temp = this.getServletContext().getRealPath("temp");
DiskFileItemFactory factory = new DiskFileItemFactory(1024 * 1024, new File(path_temp));
// 2.创建文件上传的核心类
ServletFileUpload upload = new ServletFileUpload(factory);
// 设置上传文件名的编码----以防文件名乱码
upload.setHeaderEncoding("utf-8");
// ServletFileUpload的API
boolean multipartContent = upload.isMultipartContent(request);// 判断表单是否是文件上传的表单
if (multipartContent) {
// 是文件上传的表单
// **解析request获得文件项集合
List<FileItem> parseRequest = upload.parseRequest(request);
if (parseRequest!=null) {
for (FileItem item : parseRequest) {
//判断是不是一个普通表单项
boolean formField = item.isFormField();
if (formField) {
//普通表单项
String fieldName = item.getFieldName();
String fieldValue = item.getString("UTF-8");//对普通表单项的内容编码
} else {
//获取文件名
String fileName = item.getName();
//得到输入流
InputStream in = item.getInputStream();
//获取文件存放路径
String path = this.getServletContext().getRealPath("upload");
//将文件存入相应目录
OutputStream out = new FileOutputStream(path+"/"+fileName);
IOUtils.copy(in, out);
in.close();
out.close();
//最后删除temp目录下的临时文件、
item.delete();
}
}
}
} else {
// 非文件上传表单,用原始获取方式request.getParameter("表单name");
}
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
最新文章
- 同一行多个div宽度自适应布局
- Oldboy-Homework-Week1
- PHP 将下划线命名 转换为 驼峰式命名
- 用jQuery Mobile搭建一个简单的手机页面
- HTTP权威指南阅读笔记二:URL与资源
- error at ::0 can&#39;t find referenced pointcut解决办法(转载)
- API文档中,<;E>;、<;T>;、<;?>;分别代表什么意思
- Codeforces Round #312 (Div. 2) C. Amr and Chemistry 暴力
- 深入浅出Mybatis-分页
- segue生命周期
- PHP FTP
- iostat查看io情况(监控Linux的8种方式)
- 移动端 微信 网易 触屏滑动回弹菜单(css版)
- POJ 1323 Game Prediction#贪心
- 远离DoS攻击 Windows Server 2016发布DNS政策
- Apache Flume日志收集系统简介
- java Socket实例
- 转《基于Ionic3实现微信支付和支付宝支付》
- session和cokkie的区别与作用
- Json Web Token JJWT
热门文章
- 【C#】无损转换Image为Icon 【C#】组件发布:MessageTip,轻快型消息提示窗 【C#】给无窗口的进程发送消息 【手记】WebBrowser响应页面中的blank开新窗口及window.close关闭本窗体 【手记】调用Process.EnterDebugMode引发异常:并非所有引用的特权或组都分配给呼叫方 【C#】DataRowState演变备忘
- Exception from container-launch: org.apache.hadoop.util.Shell$ExitCodeException
- C语言细节笔记2
- HTML5开发实战——Sencha Touch篇(1)
- qt之旅-1纯手写Qt界面
- Timus 1545. Hieroglyphs Trie的即学即用 实现字典提示功能
- extjs grid 列顺序紊乱问题
- Virtual IP address
- android stdio 异常
- Buildroot构建指南——根文件系统(Rootfs)【转】