编辑jsp页面:

 <html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head> <body>
<div class="container">
<!-- 文件上传时必须设置 entype 为 multipart/form-data 不对字符进行编码 -->
<form action="UploadServlet" method="post" enctype="multipart/form-data">
<table>
<tr>
<!-- 设置 for ="file" 在鼠标点击标签时会弹出文件选取框 -->
<td><label for="file">上传文件:</label></td>
<td><input type="file" id="file" name="picture" value=""/></td>
</tr>
<tr>
<!-- 设置占据两个单元格 -->
<td colspan="2" ><input type="submit" value="提交"/></td>
</tr>
</table>
</form>
</div> </body>
</html>

编辑servlet:

 import java.io.IOException;
import java.util.UUID; 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("/UploadServlet")
@MultipartConfig
public class UploadServlet extends HttpServlet{ @Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
super.doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//获取文件部件 part
Part part = req.getPart("upload");
//获取服务器的路径
String root = req.getServletContext().getRealPath("/upload");
System.out.println("服务器路径:"+root);
/**
* 可以选择 使用getSubmittedFikeName 获取文件名 或从文件头部信息中截取文件名
*/
/**
* 获取文件名
*/
String name= part.getSubmittedFileName();
System.out.println("SubmittedFileName:" + name);
//截取文件后缀名
String ext = name.substring(name.lastIndexOf("."),name.length());
/**
* 获取文件头部信息(目的是从头部信息中截取文件名或扩展名)
*/
// String name=part.getHeader("content-disposition");
// System.out.println("name:"+name);
// //获取文件后缀名
// //form-data; name="upload"; filename="C:\Users\Administrator\Desktop\error.PNG"
// //需要提取从最后一个点后的后缀名 由于默认路径字符串里最后带有引号 则需要使用length()-1
// String ext = name.substring(name.lastIndexOf("."),name.length()-1);
// System.out.println("ext:"+ext);
//写出完整的文件路径
String filename = root+"\\"+UUID.randomUUID().toString()+ext;
System.out.println("filename:"+filename);
//写入文件
part.write(filename); } }

最新文章

  1. WPF 自定义绕圈进度条
  2. 故障处理-ORA-00376/ORA-01110
  3. [LeetCode]题解(python):046-Permutations
  4. Tomcat设置自己的项目为默认项目(用IP访问的是自己的项目)
  5. CentOS上安装MyCat-MySQL
  6. Registry uninstall values
  7. 【Android】android镜像翻转
  8. 添加“返回顶部”小图标按钮的JS(JavaScript)代码详解
  9. A+B Format
  10. Unix/Linux命令:SED
  11. Firefox使用Poster插件发送post请求
  12. Android Fragment碎片
  13. Leetcode 992 Subarrays with K Different Integers
  14. [LeetCode] Cheapest Flights Within K Stops K次转机内的最便宜的航班
  15. openstack 之~keystone之HTTP协议
  16. 利用python数据分析与挖掘相关资料总结
  17. 20170821xlVBA跨表公式套用
  18. centos6 安装 docker 问题
  19. 记安装ubuntu server和一些程序
  20. POJ3907 Build Your Home

热门文章

  1. sql分组和连接
  2. eclipse之版本代号
  3. Node.js中的Buffer
  4. [学习资料] Tiny210(S5PV210) u-boot移植
  5. IOC&amp;DI
  6. Javascript类型转换的规则全面&amp;附有实例
  7. input range音乐进度条
  8. 封装java-get-post请求方式
  9. Rikka with Phi 线段树
  10. Reorder the Books-HDU5500