博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java接收File文件的方法
阅读量:6226 次
发布时间:2019-06-21

本文共 4952 字,大约阅读时间需要 16 分钟。

hot3.png

1.

@RequestMapping("/doSaveBill.htm")	 public void uploadFile(Integer loginId,HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException {        int num = 0;        // 设置request编码,主要是为了处理普通输入框中的中文问题        request.setCharacterEncoding("UTF-8");        System.out.println("解析工作马上开始.......................");        // 这里对request进行封装,RequestContext提供了对request多个访问方法        org.apache.commons.fileupload.RequestContext requestContext = new ServletRequestContext(request);        // 判断表单是否是Multipart类型的。这里可以直接对request进行判断,不过已经以前的用法了        if (FileUpload.isMultipartContent(requestContext)) {            num++;            DiskFileItemFactory factory = new DiskFileItemFactory();            // 设置文件的缓存路径            factory.setRepository(new File("D:/tmp"));            File dir = new File("d:\\download");            if (!dir.exists()) {                dir.mkdirs();            }            // System.out.print("已经生成临时文件");            try {				response.getWriter().write("200");			} catch (IOException e2) {				// TODO Auto-generated catch block				e2.printStackTrace();			}                        ServletFileUpload upload = new ServletFileUpload(factory);            // 设置上传文件大小的上限,-1表示无上限            upload.setSizeMax(100000 * 1024 * 1024);            List items = new ArrayList();            try {                // 上传文件,并解析出所有的表单字段,包括普通字段和文件字段                items = upload.parseRequest(request);            } catch (FileUploadException e1) {                System.out.println("文件上传发生错误" + e1.getMessage());            }            // 下面对每个字段进行处理,分普通字段和文件字段            Iterator it = items.iterator();            while (it.hasNext()) {                DiskFileItem fileItem = (DiskFileItem) it.next();                // 如果是普通字段                if (fileItem.isFormField()) {//                    System.out.println(fileItem.getFieldName()//                            + "   "//                            + fileItem.getName()//                            + "   "//                            + new String(fileItem.getString().getBytes("iso8859-1"), "gbk"));                } else {                    System.out.println(fileItem.getFieldName() + "   "                            + fileItem.getName() + "   "                            + fileItem.isInMemory() + "    "                            + fileItem.getContentType() + "   "                            + fileItem.getSize());                    // 保存文件,其实就是把缓存里的数据写到目标路径下                    if (fileItem.getName() != null && fileItem.getSize() != 0) {                        File fullFile = new File(fileItem.getName());                        File newFile = new File("d:/download/"+num  //拼上num,防止文件名重复                                + fullFile.getName());                        try {                            fileItem.write(newFile);                            // 设置响应码                            response.setStatus(200);                        } catch (Exception e) {                            e.printStackTrace();                        }                    } else {                        System.out.println("文件没有选择 或 文件内容为空");                    }                }            }            //上传完毕后手动删除缓存的 文件            File file = new File("D:/tmp");            if (file.exists()) {                File[] listFiles = file.listFiles();                for (File deleteFile : listFiles) {                    deleteFile.delete();                }            }                   }	}

2.使用spring文件解析器

@RequestMapping("/doSaveBill2.htm")	public void upload(Integer loginId,HttpServletRequest req,HttpServletResponse resp){		Map
result = new HashMap
(); File localFile = null; //创建通用的多部分解析器 CommonsMultipartResolver cmr = new CommonsMultipartResolver(req.getSession().getServletContext()); //判断是否有文件在request中,即多部分请求 if(cmr.isMultipart(req)){ //转换成多部分request MultipartHttpServletRequest msr = (MultipartHttpServletRequest)req; //取得request中所有的文件名 Iterator
iter = msr.getFileNames(); while(iter.hasNext()){ //记录上传过程起始时的时间,用来计算上传时间 long pre = System.currentTimeMillis(); //取得上传的文件 MultipartFile file = msr.getFile(iter.next()); if(file != null){ //取得当前上传文件的文件名 String fileName = file.getOriginalFilename(); //如果文件名不为"",说明该文件存在,否则说明该文件不存在 if(!"".equals(fileName.trim())){ //重命名上传后的文件名 String newFileName = ""+System.currentTimeMillis()+fileName; //定义上传路径 String path = "D:/download" + newFileName; localFile = new File(path); try { file.transferTo(localFile); } catch (Exception e) { LOGGER.error("文件上传出错"); } }else{ result.put("code", "2"); result.put("msg", "文件不存在!"); } } } } if(!"2".equals(result.get("code"))){//成功返回200 result.put("code", "200"); result.put("msg", "文件上传成功"); } }

 

转载于:https://my.oschina.net/MrBamboo/blog/794542

你可能感兴趣的文章
SSH on Mac OS
查看>>
asp.net 坑爹教材
查看>>
解析Mybatis源码解读-设计模式总结
查看>>
单行文本溢出、多文本溢出
查看>>
数据的采集,清洗,数据机器自动标注及转化为深度学习格式
查看>>
Practical Vim Edit Text at the Speed of Thought笔记
查看>>
include 和require的区别
查看>>
gradle.properties使用
查看>>
C# 不重启程序修改并保存配置文件(appSettings节点)
查看>>
JAVA_四大代码块_普通代码块、构造代码块、静态代码块、同步代码块。
查看>>
Percona Toolkit mysql辅助利器
查看>>
Flex4.5从浅入深—第一章—第三节Alert弹出框组件运用
查看>>
oracle错误-ORA-12519, TNS:no appropriate service handler found
查看>>
JavaScript的组成
查看>>
了解自己,了解他人
查看>>
古典密码-多表密码体制
查看>>
Python多进程(multiprocessing)
查看>>
本地hosts文件
查看>>
CF24D Broken robot
查看>>
apt --fix-broken install
查看>>