jvaa文件上传

10 篇文章 0 订阅

前端点击上传,将文件通过request传入后端,后端解析request,拿到request中的文件。

package fv.Utils;

import org.apache.commons.collections.map.HashedMap;
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 javax.servlet.http.HttpServletRequest;
import java.io.*;
import java.util.List;
import java.util.Map;

/**
 * Created by infodba on 2018/3/1.
 */
public class LoadUpExcelUtil {

    public FileItem loadUpExcel(HttpServletRequest req) throws UnsupportedEncodingException {
        FileItem file = null;
        Map<String,Object> map = new HashedMap();
        Map<String, Object> sheetMap = null;
        req.setCharacterEncoding("UTf-8");
        String t = Thread.currentThread().getContextClassLoader().getResource("").getPath();
        int num = t.indexOf(".metadata");
        String basepath = t;//t.substring(1, num).replace('/', '\\') + req.getContextPath().replace("/", "") + "\\WebContent\\WEB-INF";
        //System.out.println(basepath);

        //获取的up目录的路径
          String path = basepath; //+ "\\upload";
        //临时文件目录
        String tmpPath = basepath;

        //检查我们是否有文件上传请求
        boolean isMultipart = ServletFileUpload.isMultipartContent(req);
        //1,声明DiskFileItemFactory工厂类,用于在指定磁盘上设置一个临时目录
        DiskFileItemFactory disk = new DiskFileItemFactory(1024 * 10, new File(tmpPath));
        //2,声明ServletFileUpload,接收上边的临时文件。也可以默认值
        ServletFileUpload up = new ServletFileUpload(disk);
        //3,解析request
        try {
            List<FileItem> list = up.parseRequest(req);
            //如果就一个文件,
             file = list.get(0);
            //获取文件名:
            String fileName = file.getName();
            //获取文件的类型:
            //   String fileType = file.getContentType();
            //获取文件的字节码:
            InputStream in = file.getInputStream();

	        //文件大小
            int size = file.getInputStream().available();
            //声明输出字节流
            OutputStream out = new FileOutputStream(path+"/"+fileName);
            //文件copy
            byte[] b = new byte[1024];
            int len = 0;
            while((len=in.read(b))!=-1){
                out.write(b, 0, len);
            }
            out.flush();
            out.close();

            //删除上传生成的临时文件
            //file.delete();

            //显示数据
//	        resp.setContentType("text/html;charset=UTF-8");
//	        PrintWriter pw = resp.getWriter();
//	        pw.println("文件名:"+fileName);
//	        pw.println("文件类型:"+fileType);
//	        pw.println("<br/>文件大小(byte):"+size);
           // List<PlanDetail> details = jiexiExcel(in, file);

//            map.put("details",details);
//            map.put("fileName",fileName);

        } catch (FileUploadException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return file;
    }



}

拿到fileitem后,可以根据自己的需求,将它写入流中。

        InputStream is = null;
        try {
            is = file.getInputStream();
        } catch (IOException e) {
            e.printStackTrace();
        }
然后可以根据业务场景,保存到本地某个路径,重命名等等...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值