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异步提交也行) 

例如:


 
  
 

看完了这篇文章,相信你对“Java原生服务器接收上传文件不使用MultipartFile类的示例分析”有了一定的了解,如果想了解更多相关知识,欢迎关注创新互联行业资讯频道,感谢各位的阅读!


文章标题:Java原生服务器接收上传文件不使用MultipartFile类的示例分析
转载源于:http://scyanting.com/article/pohioe.html