【左京淳的JAVA WEB学习笔记】第六章 档案上传

档案上传与一般表单提交的格式不同。
一般表单提交默认enctype = "application/x-www-form-urlencoded"
档案上传则必须设置enctype = "multipart/form-data"

动手做做看
在main资料夹下,新建一个文件上传页面uploadFile.jsp

<%
  String path = request.getContextPath();
  String basePath = request.getScheme() + "://" + request.getServerName()  
  + ":" + request.getServerPort() + path + "/";
%>
<body>
  <h1>文件上传</h1>
  <form action="<%=basePath%>FileSvl" enctype = "multipart/form-data" method = "post">
    文件名:<input type="text" name="fname" id="fname">
    <input type="file" name="file" onchange="show(this)"><br>
  <input type="submit" value="上传">
  ${msg}
  </form>
</body>
<script src="http://ajax.microsoft.com/ajax/jQuery/jquery-1.4.4.min.js"></script>
<script type="text/javascript">
  function show(source){
    var arrs = $(source).val().splite('\\');
    var filename = arrs[arrs.length - 1];
    $(#fname).val(filename);
  }
</script>

注:js脚本用来显示被选择的文件名称。

新建一个FileSvl

import javax.servlet.http.Part;

@WebServlet("/FileSvl")
@MultipartConfig(maxFileSize = 300 * 1024)
public class FileSvl extends HttpServlet {
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    request.getRequestDispatcher("/main/uploadFile.jsp").forward(request, response);
  }

  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String fname = request.getParameter("fname");
    try {
      Part part = request.getPart("file");
      String picPath = request.getServletContext().getRealPath("/") + "pic";
      part.write(picPath + "/" + fname);
      request.setAttribute("msg","上传成功");
    }catch(Exception e) {
      e.printStackTrace();
      request.setAttribute("msg", e.getMessage());
    }
    request.getRequestDispatcher("/main/uploadFile.jsp").forward(request, response);
  }
}

注:用@MultipartConfig标签可限制上传档案大小
使用request.getPart()取得上传档案後储存在变数里,再转存到指定路径的资料夹内。


<<:  在投影片内文字选取位置插入等大图片_以字图取代文字【PowerPoint VBA】

>>:  Azure Developer Course

每个人都该学的30个Python技巧|技巧 29:Python内建模组—random(字幕、衬乐、练习)

昨天教到了模组这个概念,还提到怎麽建立以及各种汇入的方式。那既然Python有很多内建的函式,当然也...

[ 卡卡 DAY 23 ] - React Native 表单套件用 Formik + Yup 验证 (上)

在网路上看到有人推荐 Formik 不仅符合 react native 也可以在 react 上使...

Day 17 - 人生的复杂度大概就是指数型的增加吧

Intro Complexity 可以了解程序的运作效率 graph 可以把复杂的问题抽象化,或是可...

DAY28 CNN(卷积神经网路 续二)

昨天介绍完CNN卷积神经网路正向传播程序,今天要来研究CNN卷积神经网路反向传播程序: 首先在上次全...

菜鸟新人第七十五天

当小菜渣也好一阵子了, 来记录一下 铁人赛结束後,也顺利的录取心目中满意的公司 十一月报到後就开始当...