热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

Java原生服务器接收上传文件不使用MultipartFile类

这篇文章主要为大家详细介绍了Java原生服务器接收上传文件,不使用MultipartFile类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

由于工作中 使用 MultipartFile 与现有的一些上传文件组件冲突

所以使用其他的接收上传文件的方法.

首先我把 MultipartFile 类的配置文件注释掉.


然后把原有的文件接收方法,改为此代码,

注释详细,就不多废话了:

/**
* 从 request 中获取上传的文件
* @warn 后续需要 删除处理文件上传时
* 生成的临时文件 ,使用item.delete();
* @param request http请求
* @param encoding 解码方式,传null默认 utf-8
* @return 返回的是一个 FileItem 集合
*/
public List getUploadInputSteam(HttpServletRequest request,String encoding){
 if (encoding==null || "".equals(encoding)) {
 encoding = "UTF-8";
 }
 List items = new ArrayList();
 //初始化需要解析文件的几个类
 DiskFileItemFactory factory = new DiskFileItemFactory();
 ServletFileUpload upload = new ServletFileUpload(factory);
 upload.setHeaderEncoding(encoding);
 if (!ServletFileUpload.isMultipartContent(request)) {
 return items;
 }
 try {
 //使用ServletFileUpload解析器解析上传数据,解析结果返回的是一个List集合
 //每一个FileItem对应一个Form表单的输入项
 List list = upload.parseRequest(request);
 for (FileItem item : list) {
 //如果fileitem中封装的是普通输入项的数据
 if (item.isFormField()) {
// String name = item.getFieldName();
//  //解决普通输入项的数据的中文乱码问题
// String value = item.getString(encoding);
// System.out.println(name +"="+value);
 }else{
 String fileName = item.getName();
 if (fileName==null||fileName.trim().equals("")) {
 continue;
 }
 //注意:不同的浏览器提交的文件名是不一样的,有些浏览器提交上来的文件名是带有路径的,
 //如: c:\a\b\1.txt,而有些只是单纯的文件名,如:1.txt
 //处理获取到的上传文件的文件名的路径部分,只保留文件名部分
// fileName = fileName.substring(fileName.lastIndexOf("\\")+1);
 items.add(item);
 }
 }
 } catch (Exception e) {
 e.printStackTrace();
 return items;
 }
 return items;
 }
 @RequestMapping("/testUpload")
 @ResponseBody
 public String testUpload(HttpServletRequest request) throws Exception{
 //获取文件集合
 List items = getUploadInputSteam(request, "utf-8");
 //取第一个做实验
 FileItem item = items.get(0);
 
 //上传的文件名
 String fileName = item.getName();
 fileName = fileName.substring(fileName.lastIndexOf("\\")+1);
 
 //数据流获取,获得数据流你可以自由解析 , 保存 等操作
 InputStream in = item.getInputStream();
 
 //关闭流
 in.close();
 
 //最后一定要删除,item的临时文件
 item.delete();
 return "success!";
}

注意:

1.解析文件的类 都来自 org.apache.commons 的这个包

2.前端传来一定要写 好表单的,action 的 url ,enctype="multipart/form-data",post请求

3.input 按钮指明 type="file" name="xxx" 然后还有 提交按钮  (使用ajax异步提交也行) 

例如:


 
  
 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • PHP 5.5.0rc1 发布:深入解析 Zend OPcache
    2013年5月9日,PHP官方发布了PHP 5.5.0rc1和PHP 5.4.15正式版,这两个版本均支持64位环境。本文将详细介绍Zend OPcache的功能及其在Windows环境下的配置与测试。 ... [详细]
  • 本文介绍如何在Java项目中使用Log4j库进行日志记录。我们将详细说明Log4j库的引入、配置及简单应用,帮助开发者快速上手。 ... [详细]
  • 本文详细介绍了如何在ECharts中使用线性渐变色,通过echarts.graphic.LinearGradient方法实现。文章不仅提供了完整的代码示例,还解释了各个参数的具体含义及其应用场景。 ... [详细]
  • 探讨了小型企业在构建安全网络和软件时所面临的挑战和机遇。本文介绍了如何通过合理的方法和工具,确保小型企业能够有效提升其软件的安全性,从而保护客户数据并增强市场竞争力。 ... [详细]
  • 本文详细介绍了如何准备和安装 Eclipse 开发环境及其相关插件,包括 JDK、Tomcat、Struts 等组件的安装步骤及配置方法。 ... [详细]
  • 本文详细解析了如何使用Python的urllib模块发起POST请求,并通过实例展示如何爬取百度翻译的翻译结果。 ... [详细]
  • 在本周的白板演练中,Apache Flink 的 PMC 成员及数据工匠首席技术官 Stephan Ewen 深入探讨了如何利用保存点功能进行流处理中的数据重新处理、错误修复、系统升级和 A/B 测试。本文将详细解释保存点的工作原理及其应用场景。 ... [详细]
  • 本文详细介绍了 Flink 和 YARN 的交互机制。YARN 是 Hadoop 生态系统中的资源管理组件,类似于 Spark on YARN 的配置方式。我们将基于官方文档,深入探讨如何在 YARN 上部署和运行 Flink 任务。 ... [详细]
  • 本文详细介绍如何利用已搭建的LAMP(Linux、Apache、MySQL、PHP)环境,快速创建一个基于WordPress的内容管理系统(CMS)。WordPress是一款流行的开源博客平台,适用于个人或小型团队使用。 ... [详细]
  • PHP 过滤器详解
    本文深入探讨了 PHP 中的过滤器机制,包括常见的 $_SERVER 变量、filter_has_var() 函数、filter_id() 函数、filter_input() 函数及其数组形式、filter_list() 函数以及 filter_var() 和其数组形式。同时,详细介绍了各种过滤器的用途和用法。 ... [详细]
  • 本文详细介绍了如何使用 HTML 和 CSS 对文件上传按钮进行样式美化,使用户界面更加友好和美观。 ... [详细]
  • 本文详细介绍了 Java 中的 org.apache.hadoop.registry.client.impl.zk.ZKPathDumper 类,提供了丰富的代码示例和使用指南。通过这些示例,读者可以更好地理解如何在实际项目中利用 ZKPathDumper 类进行注册表树的转储操作。 ... [详细]
  • This pull request introduces the ability to provide comprehensive paragraph configurations directly within the Create Note and Create Paragraph REST endpoints, reducing the need for additional configuration calls. ... [详细]
author-avatar
mobiledu2502917177
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有