SZ_Orain 2016-10-05 06:54 采纳率: 0%
浏览 3065

请问,为啥我的上传后台接收到的信息全是null啊,

这是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">




































${msg }
上传文件
论文名字
论文作者
作者国籍
所属学科
研究机构




  • 写回答

3条回答 默认 最新

  • SZ_Orain 2016-10-05 06:55
    关注

    package com.heima.servlet;

    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.util.List;

    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    import org.apache.commons.fileupload.FileItem;
    import org.apache.commons.fileupload.disk.DiskFileItemFactory;
    import org.apache.commons.fileupload.servlet.ServletFileUpload;

    import com.heima.domin.Page;
    import com.heima.service.upLoadService;
    import com.heima.utils.UUIDUtils;
    import com.heima.utils.UploadUtils;

    public class uploadServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doPost(request, response);
    }
    
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
           //判断是否是上表单
        if(!ServletFileUpload.isMultipartContent(request)){
            request.setAttribute("msg", "表单错误,请重新上传");
            request.getRequestDispatcher("/view/file.jsp").forward(request, response);
        }
        //判断是上传表单。
        //创建磁盘文件项工厂。
        DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
        //设置缓冲区大小
        diskFileItemFactory.setSizeThreshold(5 * 1024 * 1024);
        //获得临时缓冲区绝对磁盘路径。
        String temp = getServletContext().getRealPath("/temp");
        //当文件超过我指定大小时,文件的存放位置。
        diskFileItemFactory.setRepository(new File(temp));
        //获得文件的核心解析类。
        ServletFileUpload fileUpload = new ServletFileUpload(diskFileItemFactory);
        //设置字符串编码,防止乱码。
        fileUpload.setHeaderEncoding("UTF-8");
        //设置上传的最大值。
        //fileUpload.setFileSizeMax(5 * 1024 * 1024);
        //解析request
        //创建业务层对象。
        upLoadService us = new upLoadService(); 
        //创建page对象
        Page page = new Page();
        try{
            List<FileItem> list = fileUpload.parseRequest(request);
            //判断是否为上传文本项。
            for (FileItem fileItem : list) {
                //判断是普通项
                if(fileItem.isFormField()){
                    //获得普通项的名称。
                    String name = fileItem.getFieldName();
                    //获得普通项的值。
                    String value = fileItem.getString("UTF-8");
                    if("pagename".equals(name)){
                        page.setPageName(value);
                    }else if("author".equals(name)){
                        page.setAuthor(value);
                    }else if("nation".equals(name)){
                        page.setNational(value);
                    }else if("project".equals(name)){
                        page.setProject(value);
                    }else if("university".equals("name")){
                        page.setUniversity(value);
                    }
                }else{
                    //否则即为上传项
                    //获得项目名。
                    String filename = fileItem.getName();
                    //获得绝对磁盘路径
                    String filepath = getServletContext().getRealPath("/load");
                    //判断是否为ie6等版本低的浏览器。查找项目名中是否有\,需要将其转义为\\.
                    if(filename.indexOf("\\")!=-1){
                        //获得最后一个/的索引
                        int index = filename.lastIndexOf("\\");
                        //截取用户名。
                         filename = filename.substring(index+1);
                    }
                    //使用UUID处理用户名防止用户名重复而导致的覆盖。
                    String RealName = UUIDUtils.getUUIDFileName(filename);
                    //使用目录分级工具将上传目录分级
                    String upath = UploadUtils.getPath(RealName);
                    //获得上传路径
                    String path = filepath+upath;
                    //创建路径对象。
                    File file2 = new File(path);
                    //如果文件夹不存在。则创建多级目录
                    if(!file2.exists()){
                        file2.mkdirs();
                    }
                    page.setPageUri(path);
                    //传入service中。
                    us.service(page);
                  //获得文件内容。
                 InputStream is = fileItem.getInputStream();
                 //获得输出流。
                 OutputStream os = new FileOutputStream(page+"\\"+RealName);
                 int len = 0;
                 byte[] arr = new byte[1024];
                 while((len=is.read(arr))!=-1){
                     os.write(arr, 0, len);
                 }
                 //关流
                 is.close();
                 os.close();
            }
                //删除临时文件
              fileItem.delete();    
            }
        }catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
    }
    

    }

    这时后台

    评论

报告相同问题?

悬赏问题

  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用