使用第三方组件上传——————参考代码

发布于:2022-12-19 ⋅ 阅读:(365) ⋅ 点赞:(0)

  request.setCharacterEncoding("utf-8");
    boolean bRet = false;
    boolean bUpload = false;
    String uploadFileName = "";
    String fieldName = "";
    News news = new News();
    NewsService newsService = new NewsServiceImpl();
    news.setCreateDate(new Date());
    //解析请求之前先判断请求类型是否为文件上传类型
    boolean isMultipart = ServletFileUpload.isMultipartContent(request);
    //指定上传位置
    String uploadFilePath = request.getSession().getServletContext().getRealPath("upload/");

    File saveDir = new File(uploadFilePath);
    //如果目录不存在,就创建目录
    if(!saveDir.exists()){
        saveDir.mkdir();
    }
    //判断是否有上传文件,有则是true  ,没有就是false
    if(isMultipart){
        //创建文件上传核心类
        FileItemFactory factory = new DiskFileItemFactory(); // 实例化一个硬盘文件工厂,用来配置上传组件ServletFileUpload
        ServletFileUpload upload = new ServletFileUpload(factory); // 用以上工厂实例化上传组件
        try{
            //处理表单请求
            List<FileItem> items = upload.parseRequest(request);
            Iterator<FileItem> iter = items.iterator();
            while(iter.hasNext()){
                FileItem item = (FileItem)iter.next();
                if(item.isFormField()){// 如果是普通表单控件
                    fieldName = item.getFieldName();// 获得该字段名称
                    if(fieldName.equals("title")){
                        news.setTitle(item.getString("UTF-8"));//获得该字段值
                    }else if(fieldName.equals("categoryId")){
                        news.setCategoryId(Integer.parseInt(item.getString()));
                    }else if(fieldName.equals("summary")){
                        news.setSummary(item.getString("UTF-8"));
                    }else if(fieldName.equals("content")){
                        news.setContent(item.getString("UTF-8"));
                    }else if(fieldName.equals("author")){
                        news.setAuthor(item.getString("UTF-8"));
                    }
                }else{// 如果为文件域
                    String fileName = item.getName();// 获得文件名(全路径)
                    if(fileName != null && !fileName.equals("")){
                        File fullFile = new File(fileName);
                        File saveFile = new File(uploadFilePath,fullFile.getName());//将文件保存到指定的路径
                        item.write(saveFile);
                        uploadFileName = fullFile.getName();
                        news.setPicPath(uploadFileName);
                        bUpload = true;

                    }

                }
            }
        }catch(Exception e){
            e.printStackTrace();
        }

    }
    System.out.println("上传成功之后的文件名:" + news.getPicPath());
    //调用后台的方法,将新闻信息插入数据库中
    bRet = newsService.add(news);
    if(bRet) {
        response.sendRedirect("index.jsp");
    }else {
        response.sendRedirect("index.jsp");
    }