分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

文件的上传与下载(2)

发布时间:2023-09-06 02:12责任编辑:彭小芳关键词:暂无标签

    文件的上传与下载

1、文件的上传

1.1、前端代码:

1 <form action="${pageContext.request.contextPath}/upload.do" enctype="multipart/form-data" method="post">2 ??上传文件1:<input type="file" name="file1"></br>3 ??上传文件2:<input type="file" name="file2"></br>4 ??上传文件3:<input type="file" name="file3"></br>5 ??<input type="submit" value="提交"/>${result}6 </form>

其中关于enctype的用法。

application/x-www-form-urlencoded不是不能上传文件,是只能上传文本格式的文件,multipart/form-data是将文件以二进制的形式上传,这样可以实现多种类型的文件上传

1.2、后端代码

web.xml代码:

1 <servlet>2 ????????<servlet-name>UploadServlet</servlet-name>3 ????????<servlet-class>uploadServlet.UploadServlet2</servlet-class>4 ????</servlet>5 ????<servlet-mapping>6 ????????<servlet-name>UploadServlet</servlet-name>7 ????????<url-pattern>/upload.do</url-pattern>8 ????</servlet-mapping>

servlet代码:

 1 public class UploadServlet2 extends HttpServlet { 2 ?3 ????@Override 4 ????protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 5 ????????//super.doGet(req, resp); 6 ????????doPost(req,resp); 7 ????} 8 ?9 ????@Override10 ????protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {11 ????????/**设置上传保存路径*/12 ????????String filePath = getServletContext().getRealPath("/")+"images";13 ????????File file = new File(filePath);14 ????????if (!file.exists()){15 ????????????file.mkdir();16 ????????}17 ????????SmartUpload smartUpload = new SmartUpload();18 ????????/**初始化对象*/19 ????????smartUpload.initialize(getServletConfig(),req,resp);20 ????????/**设置上传文件大小*/21 ????????smartUpload.setMaxFileSize(1024*1024*100);22 ????????/**设置所有文件的大小*/23 ????????smartUpload.setTotalMaxFileSize(1024*1024*1000);24 ????????/**设置允许上传文件的类型*/25 ????????smartUpload.setAllowedFilesList("txt,jpg,png,gif");26 ????????String result = "上传成功";27 ????????try {28 ????????????smartUpload.setDeniedFilesList("rar,jsp,js");29 ????????????smartUpload.upload();30 ????????????int count = smartUpload.save(filePath);31 ????????????System.out.println("上传成功了:"+count+"文件");32 ????????} catch (Exception e) {33 ????????????result = "上传失败";34 ????????????e.printStackTrace();35 ????????}36    37 ????????req.setAttribute("result",result);38 ????????req.getRequestDispatcher("/index.jsp").forward(req,resp);39 40 ????}41 }

2、文件的下载

2.1  前端代码

注意:发送的是一个get请求

下载:<a href="${pageContext.request.contextPath}/download.do?filename=01.mp4">下载</a>

2.2 servlet代码

注意如果发送的是一个GET请求,一定要将super.doGet(req,resp);方法注释掉;

否则会报错HTTP Status 405 - HTTP method GET is not supported by this URL。

原因是父类中返回的信息(查看原码可知)。

 1 /** 2 ?* @Author: jack 3 ?* @Create: 2018-08-29-16:25 4 ?* @Desc: 5 ?**/ 6 public class UploadServlet3 extends HttpServlet { 7 ?8 ????@Override 9 ????protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {10 // ???????super.doGet(req, resp);11 ????????doPost(req,resp);12 13 ????}14 15 ????@Override16 ????protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {17 ????????/**获取文件名*/18 ????????String filename = req.getParameter("filename");19 ????????/**初始化对象*/20 ????????SmartUpload su = new SmartUpload();21 ????????su.initialize(getServletConfig(),req,resp);22 ????????/**设定contentDisposition为null以禁止浏览器自动打开文件*/23 ????????su.setContentDisposition(null);24 ????????try {25 ????????????/**文件在服务器的地址*/26 ????????????su.downloadFile("/images/"+filename);27 ????????} catch (SmartUploadException e) {28 ????????????e.printStackTrace();29 ????????}30 ????}31 }

3、服务器向浏览器发送文件

3.1 前端代码

 1 <img id="img" src=""> 2 ????<button onclick="showImg()">显示</button> 3 ????<button onclick="coverImg()">隐藏</button><br/> 4 ?5 <script> 6 ????????/**显示图片*/ 7 ????????function showImg() { 8 ????????????var img = document.getElementById("img"); 9 ????????????????img.setAttribute("src","/image");10 11 ????????}12 ????????/**隐藏图片*/13 ????????function coverImg() {14 ????????????var img = document.getElementById("img");15 ????????????img.setAttribute("src","");16 ????????}17 </script> ???

3.2 java后台代码

 1 ** 2 ?????* 服务器向浏览器发送图片流 3 ?????* @param response 4 ?????* @throws IOException 5 ?????*/ 6 ????@RequestMapping("/image") 7 ????public void demo(HttpServletResponse response) throws IOException { 8 ????????/**设置编码格式*/ 9 ????????response.setContentType("charset=utf-8");10 ????????/**文件所在的位置*/11 ????????File file = new File("F:/temp/1.jpg");12 ????????FileInputStream in = new FileInputStream(file);13 ????????/**创建输出流向网页输入内容*/14 ????????OutputStream out = response.getOutputStream();15 ????????byte[] buffer = new byte[1024];16 ????????int len;17 ????????while ((len=in.read(buffer)) > 0){18 ????????????out.write(buffer,0,len);19 ????????}20 ????????/**关闭流*/21 ????????in.close();22 23 ????}

文件的上传与下载(2)

原文地址:https://www.cnblogs.com/xiaocao123/p/9560607.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved