这篇文章主要介绍“JavaWeb文件上传实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JavaWeb文件上传实例分析”文章能帮助大家解决问题。
文件上传实际上就是Browser (浏览器)跟 Server(服务器)的数据互动,JavaWeb实现文件上传也不例外,当用户在前端网页点击文件上传后,用户上传提交的内容会存放到临时的文件中,我们使用getpart来获取Part对象,并通过Part对象获得流,javaWeb的servlet会获得用户所提交的文件并且将文件存放到服务器里。
get 请求,参数是放在 URL 地址栏中发送到服务器的 /xxx?id=3&name=admin
post 请求,参数是放在请求体中发送的,所以地址栏看不到数据
enctype 表示数据的传输格式:
application/x-www-form-urlencoded : id=3&name=admin
multpart/form-date ,表示数据将会被分段处理之后再发送
HTML中用来跟文件系统进行交互的手段只有一个 :input type=file
如果想要上传的话:
必须要用 post 进行提交,这种方式,将会把数据封装在请求体中进行发送
必须指定 enctype 为 multipart/form-date ,这样数据才会被正确分段处理并上传
JavaWeb实现文件上传基本步骤:
前端页面:
写一个 form 表单,使用 post 方法,并指定 enctype="multipart/form-date "
使用 input type = file ,来选择文件
后台接收:
要在 Servelt 上面添加 @MultipartConfig 注解
使用 req.getPart("name") 来接收文件
使用 part.write("路径") 来保存文件到服务器的硬盘
图片上传案例
//要求//1.保存为正确的后缀名//2. 限制上传图片的大小为2M//3. 正确的渲染上传的图片//页面端(upload.jsp)上传图片的代码文件上传: 点击上传//servlet 端@WebServlet("/upload")@MultipartConfigpublic class UploadServlet extends HttpServlet{@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws Exception{ req.getRequestDispatcher("/jsp/upload.jsp").forward(req, resp); }@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws Exception{ Part part = req.getPart("img") //获取上传文件if (prat.getSize() < 2 * 1024 * 1024 ) { //上传文件小于2MB时执行//保存为什么名?上传的时间加上上传的文件名做为保存名String savedName = new simpleDateFormat("yyyyMMdd_hhmmss").format(new Date) + "-"+ part.getSubmittedFileName();//保存的位置://1. getServletContext().getRealPath("/") 获取文件在电脑中的绝对路径, “/”指代项目根目录//2. new File(savedDir).mkdir() 当文件路径不存在时创建文件路径String savedDir = getServletContext().getRealPath("/img/");new File(savedDir).mkdir();//使用 part.write('路径') 来保存图片到服务器的硬盘part.write(savedDir + savedName);//重定向到upload_success.jsp页面,path把文件名传过去resp.sendRedirect(req.getContextPath() + "/jsp/upload_success.jsp?path=" + savedName); } } }//页面端(upload_success.jsp)渲染的代码
你上传的图片:
启动工程之后,选择上传的文件点击上传,并在服务器目录下得到上传的文件
关于“JavaWeb文件上传实例分析”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。