Servlet3.0中使用getPart进行文件上传
2024-08-31 03:27:26
这个先进些,简单些,但书上提供的例子不能使用,到处弄了弄才行。
servlet代码:
package cc.openhome; import java.io.InputStream; import java.io.OutputStream; import java.io.FileOutputStream; import java.io.FileNotFoundException; import java.io.File; import java.io.IOException; 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; /** * Servlet implementation class UploadServlet */ @WebServlet("/upload.do") @MultipartConfig public class UploadServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public UploadServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub //request.setCharacterEncoding("UTF-8"); Part part = request.getPart("photo"); //String uploadPath = request.getServletContext().getRealPath("/upload"); String fileName = getFileName(part); System.out.println(fileName + "*****************"); writeTo(fileName, part); } private String getFileName(Part part) { String header = part.getHeader("Content-Disposition"); String fileName = header.substring(header.indexOf("filename=\"") + 10, header.lastIndexOf("\"")); return fileName; } private void writeTo(String fileName, Part part) throws FileNotFoundException, IOException { String uploadPath = "c:/workspace"; part.write(uploadPath + File.separator + fileName); /*** InputStream in = part.getInputStream(); OutputStream out = new FileOutputStream("c:/workspace" + fileName); byte[] buffer = new byte[1024]; int length = -1; while ((length = in.read(buffer)) != -1) { out.write(buffer, 0, length); } in.close(); out.close(); ***/ } }
最新文章
- JAVA 中文转GBK内码方法
- Node.js与Sails~自定义响应体responses
- C/C++多种方法获取文件大小(转)
- python中lambda函数
- 观察者(observer)设计模式
- Android Studio 项目目录结构 英文版
- 用shell脚本爬取网页信息
- Python学习笔记第一天
- Net分布式系统之五:微服务架构
- 图像处理------颜色梯度变化 (Color Gradient)
- neutron之neutron_openvswitch_agent占用100%CPU资源问题
- mysql如何修改开启允许远程连接 (windows)
- k8s监控api调用
- 编写脚本-SQL SERVER 用户权限分配
- canvas-圆弧形可拖动进度条
- 在 Vim 中使用 pydiction 对 Python 进行代码补全
- 利用Angular.js从PHP读取后台数据
- 关于C#我今天的六个小时
- Linux系统——NFS网络文件系统
- iOS #import和@class 区别
热门文章
- ORA-00907: 缺失右括号问题或com.alibaba.druid.sql.parser.ParserException: TODO :IDENTIFIER的原因
- P1272 重建道路(树形dp)
- [Swift通天遁地]九、拔剑吧-(10)快速创建美观的聊天界面:可发送文字、表情、图片
- ACM_Mystery
- Laravel 5.4.36 session 生效问题
- java heap 异常
- fcc 响应式框架Bootstrap 练习3
- css每次的初始化代码
- Android生命周期回顾
- Android开发笔记(9)——初步设置Menu