为了账号安全,请及时绑定邮箱和手机立即绑定

上传文件问题?

上传文件问题?

慕姐8946757 2017-09-27 23:03:35
package com.itheima.web.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.ServletException;import javax.servlet.annotation.WebServlet;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.FileUploadException;import org.apache.commons.fileupload.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;import org.apache.tomcat.util.http.fileupload.IOUtils;import org.fujb.commons.CommonsUtil;@WebServlet("/AddFileServlet")public class AddFileServlet extends HttpServlet {    private static final long serialVersionUID = 1L;    protected void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        doPost(request, response);    }    protected void doPost(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        // 使用FileUpload完成文件上传        /**         * 使用Commons-FileUpload完成文件上传的步骤: * 1、生成工厂类 DiskFileItemFactory *         * 2、生成解析器类 ServletFileUpload * 3、解析request对象,的到表单项的对象的集合List         * <FileItem> * 4、遍历list集合,获取相关表单项的值         */        // 创建工厂类        DiskFileItemFactory factory = new DiskFileItemFactory();        // 设置文件的缓存路径        factory.setRepository(new File("D:/upload"));        // 设置上传的文件大于多少的时候需要缓存,即大小限制        factory.setSizeThreshold(1024 * 1024 * 3);        // 创建解析器类,需要工厂类作为参数        ServletFileUpload fileUpload = new ServletFileUpload(factory);        // 如果文件名出现中文,并且中文乱码,就可以通过一下设置规避        fileUpload.setHeaderEncoding("UTF-8");        try {            // 解析request,得到表单项对象的集合            List<FileItem> list = fileUpload.parseRequest(request);            for (FileItem fileItem : list) {                if (fileItem.isFormField()) {                    // 是普通表单项                    // 获取普通项的值                    // String value = fileItem.getString();                    // 对普通项中文乱码的处理                    String value = fileItem.getString("UTF-8");                    // 获取当前表单项的name的值                    String fieldName = fileItem.getFieldName();                    System.out.println("表单项name : " + fieldName + ", 值是: " + value);                } else {                    // 是文件表单项                    // 获取文件名                    String fileName = fileItem.getName();                    System.out.println("文件名: " + fileName);                    // 获取唯一文件名                    fileName = CommonsUtil.UUID() + "_" + fileName;                    // 目录分离                    String hexString = Integer.toHexString(fileName.hashCode());                    String path = hexString.charAt(0) + "/" + hexString.charAt(1);                    File destFile = new File("D:/upload/" + path);                    destFile.mkdirs();                    File file = new File(destFile, fileName);                    OutputStream out = new FileOutputStream(file);                    // 文件流                    InputStream in = fileItem.getInputStream();                    // 拷贝文件流                    IOUtils.copy(in, out);                    // 释放资源                    IOUtils.closeQuietly(in);                    IOUtils.closeQuietly(out);                }            }        } catch (FileUploadException e) {            e.printStackTrace();        }    }}  // 释放资源                    IOUtils.closeQuietly(in);                    IOUtils.closeQuietly(out);这个位置显示错误,说安静地关闭未定义怎么解决?(The method closeQuietly(OutputStream) is undefined for the type IOUtils)
查看完整描述

1 回答

已采纳
?
HansonQ

TA贡献223条经验 获得超56个赞

对比一下啊jar包版本。这个提示是方法未定义

查看完整回答
反对 回复 2017-09-28
  • 1 回答
  • 0 关注
  • 1237 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信