• SmartUpload实现文件上传时file和表单文本同时提交的问题


    JSP页面:

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'index.jsp' starting page</title>
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!--
        <link rel="stylesheet" type="text/css" href="styles.css">
        -->
      </head>
      
      <body>
        <form action="UploadServlet" enctype="multipart/form-data" method="post">
                用户姓名:<input type="text" name="userName" /><br/>
                上传头像:<input type="file" name="userPhoto" /><br/>
                <input type="submit" value="提交">
        </form>
      </body>
    </html>

    Servlet代码:

    package com.gy.servlet;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import com.jspsmart.upload.File;
    import com.jspsmart.upload.SmartUpload;
    
    public class UploadServlet extends HttpServlet {
    
        /**
         * Constructor of the object.
         */
        public UploadServlet() {
            super();
        }
    
        /**
         * Destruction of the servlet. <br>
         */
        public void destroy() {
            super.destroy(); // Just puts "destroy" string in log
            // Put your code here
        }
    
        /**
         * The doGet method of the servlet. <br>
         *
         * This method is called when a form has its tag value method equals to get.
         * 
         * @param request the request send by the client to the server
         * @param response the response send by the server to the client
         * @throws ServletException if an error occurred
         * @throws IOException if an error occurred
         */
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            doPost(request, response);
        }
    
        /**
         * The doPost method of the servlet. <br>
         *
         * This method is called when a form has its tag value method equals to post.
         * 
         * @param request the request send by the client to the server
         * @param response the response send by the server to the client
         * @throws ServletException if an error occurred
         * @throws IOException if an error occurred
         */
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
    
            response.setContentType("text/html");
            request.setCharacterEncoding("utf-8");
            response.setCharacterEncoding("utf-8");
            PrintWriter out = response.getWriter();
            try{
                SmartUpload su = new SmartUpload();//创建SmartUpload对象
                su.setCharset("utf-8");//设置编码
                su.initialize(this.config,request,response);//初始化设置             
                su.setAllowedFilesList("gif,bmp,jpg");//设置允许上传的文件扩展名
                su.setMaxFileSize(2*1024*1024);//设置单个文件允许最大长度(单位:字节)
                su.setTotalMaxFileSize(10*1024*1024);//设置上传文件的总大小(单位:字节)
                su.upload();//将文件数据上传
                //注意:使用SmartUpload对象获取request这句代码要放在upload()方法后面,否则拿不到数据
                out.print(su.getRequest().getParameter("userName"));
                File f = su.getFiles().getFile(0);//获取第一个上传文件
                String savePath = "upload\";
                savePath += f.getFileName();//组装存储路径
                f.saveAs(savePath);//将文件保存到指定位置
                out.println("上传成功!");
            }catch(Exception ex){
                ex.printStackTrace();
                out.println("上传异常:"+ex.getMessage());
            }
            out.flush();
            out.close();
        }
    
        private ServletConfig config;
        /**
         * Initialization of the servlet. <br>
         *
         * @throws ServletException if an error occurs
         */
        public void init(ServletConfig config) throws ServletException {
            // Put your code here
            this.config = config;
        }
    
    }
  • 相关阅读:
    设计模式读书笔记
    effective_c++(第三版)读书笔记
    CS-Notes 操作系统读书笔记
    数据库笔记
    后台开发核心技术与应用读书笔记
    python3.7安装numpy pandas失败的处理方案
    线段树模板
    KMP算法
    离散实验——欧拉图的判定和应用
    堆排序算法及其实现
  • 原文地址:https://www.cnblogs.com/tianguook/p/6231423.html
Copyright © 2020-2023  润新知