zoukankan      html  css  js  c++  java
  • Servlet3.0文件上传

    Servelt3.0文件上传作为一种便捷的文件上传方式很是值得我们去应用的

    1.Servlet3.0文件上传使用步骤

    • 浏览器端的要求
      • 表单的提交方法必须是post
      • 必须有一个文件上传组件 <input type="file" name="f"/>
      • 必须设置表单的enctype="multipart/form-data
      • 1 <form action="/upload/upload3" enctype="multipart/form-data"
        2         method="post">
        3         用户名:<input type="text" name="username"><br> 
        4         文件:<input
        5             type="file" name="f"> 
        6         <input type="submit"><br>
        7     </form>
    • 服务器端的要求
      • 在Servelt上添加注解  @MultipartConfig
      • 1 /**
        2  * Servlet3.0文件上传下载
        3  */
        4 @WebServlet("/upload3")
        5 @MultipartConfig
        6 public class upload3 extends HttpServlet {
        7     private static final long serialVersionUID = 1L;
        8        
        9     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    2.Servlet3.0文件上传如何获取数据

    • 获取普通上传组件   request.getParameter(name属性的值);
    • 获取文件上传组件   Part p =  request.getPart("表单文件组件的name名");
      • 获取表单文件的name名
        //获取表单提交页面name的属性值
                    String name = part.getName();
      • 获取真实文件名
        //获取文件真实文件名
        			String header = part.getHeader("content-disposition");
        			String realName=header.substring(header.indexOf("filename=")+10,header.length()-1);
        
      • 获取文件大小
        //获取文件的大小
                    long size = part.getSize();
      • 获取文件的输入流
        			//获取文件的输入流
        			InputStream inputStream = part.getInputStream();
        

    3.Servlet3.0文件上传可能会遇到的问题

    • 名字重复的问题 如果用户提交了两个1.png只会保存第一次 这样在实际开发中是很不可取的 解决方法有一下
      • 采用随机名称DSJDLSJDIHU739832hsdhf.png
    • 文件安全问题  如果文件都放在WebContext目录下 那么在互联网上任何人都可以访问的到 那么针对重要的文件可以这样做
      • 放在meta-inf目录下
      • 放在web-inf目录下
      • 放在项目外部 计算机文件夹中
    杂家不如专家,精益求精
  • 相关阅读:
    linux配置虚拟主机
    mysql允许远程登录
    php优化
    php socket 函数
    1-- prometheus安装、图形化界面
    Ansible Roles
    Ansible 的 Playbook
    Ansible 变量
    Ansible 模块
    Ansible入门;Ansible ad-hoc; ansible-vault加密工具 ;ansible-console
  • 原文地址:https://www.cnblogs.com/jimisun/p/7820943.html
Copyright © 2011-2022 走看看