zoukankan      html  css  js  c++  java
  • Servlet(一)—— 文件上传(表单文件上传)

    文件上传是开发一个网站最基本的一个需求功能

    前台页面的设置:

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <form action="upload.do?method=upload" method="post" enctype="multipart/form-data">
        美照:<input type="file" name="image"/><br>
        姓名:<input type="text" name="name"/><br>
        <input type="submit"/>
    </form>

    要点:

      1、提交的方式必须是post方式,因为get方式是通过url地址栏进行数据的传递的,所以不能选用get方法

      2、在form标签中需要添加 enctype="multipart/form-data"属性,如果不添加需要上传的信息内容不能传递到后台,只会传递该文件的文件名过去。使用了该属性则必须在后台使用工具将数据分离

    后台设置:

      在src目录下创建一个com.servlet包,然后添加一个UploadServlet.java类,并将该类注册到web.xml中

      拷贝cos.jar-->https://github.com/DarknessShadow/DataMaven  包放于web项目的lib目录下(cos.jar主要功能是用来分离前台传递过去的数据,然后将分离出的文件在写入到指定的路径中)

    package com.servlet;
    
    import java.io.IOException;
    import java.util.Map;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import com.oreilly.servlet.MultipartRequest;
    import com.util.Upload;
    
    public class UploadServlet extends HttpServlet{
        @Override
        protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            request.setCharacterEncoding("utf-8");
            response.setContentType("text/html;charset=utf-8");
            
            String method = request.getParameter("method");
            System.out.println(method);
            if("upload".equals(method)){
                doUpload(request,response);
            }
        
        }
    
        private void doUpload(HttpServletRequest request, HttpServletResponse response) throws IOException {
    //      按照原先的servlet的接收方式,是接收不到数据的,必须使用工具将数据分离
    //      String image = request.getParameter("image");
    //      System.out.println(image);
    //      String name = request.getParameter("name");
    //      System.out.println(name);
            
    //      同过request对象获取存储图片的真实路径
            String path = request.getServletContext().getRealPath("/images");
            System.out.println(path);
    //      获取存储数据的对象,并设置其对应的编码,路径
            MultipartRequest mr = new MultipartRequest(request, path,"utf-8");
    //      获得前台发送过来的文件原始名称
            String image = mr.getOriginalFileName("image");
            System.out.println(image);
    //      获取前台表单发送过来的普通数据
            String name = mr.getParameter("name");
            System.out.println(name);
            
        }
    }
        

    缺陷:重命名问题、中文显示问题

  • 相关阅读:
    java 上传图片
    getElementById 鼠标经过字体改变颜色
    getElementById 学习
    css的绝对定位与相对定位
    关于For循环
    扩展方法的应用
    关于Function 的学习笔记
    <a>标签中查找文件的方法
    关于Name ID class属性的区别
    使用float设置经典的网站前端结构
  • 原文地址:https://www.cnblogs.com/myfaith-feng/p/9589576.html
Copyright © 2011-2022 走看看