java上传csv错误信息_java处理csv文件上传示例详解
前言:示例只是做了一个最最基础的上传csv的示例,如果要引用到代码中去,还需要根据自己的业务自行添加一些逻辑处理。
ReadCsvUtil工具类
package com.hanfengyeqiao.gjb.utils;
import java.io.*;
import java.util.*;
/**
* csv工具类
*/
public class ReadCsvUtil {
private static final String FIX="\uFEFF";
/**
* 获取csv文件内容
* @return 对象list
*/
public static List> getResource(byte[] bate) throws IOException {
List> allString = new ArrayList();
MapcallLogInfo ;
Listlist = new ArrayList();
// 获取文件内容
list = getSource(bate);
// 获取文件表头
Listtitle = Arrays.asList(list.get(0).split(","));
String customerName = title.get(0).trim();
String customerNo = title.get(1).trim();
// 头部会带有"\uFEFF"值
if(customerName.startsWith(FIX)){
customerName = customerName.replace(FIX, "");
}
callLogInfo = new HashMap();
callLogInfo.put("param1",customerName);
callLogInfo.put("param2",customerNo);
allString.add(callLogInfo);
list.remove(0);
// 循环内容
for(int i = 0; icontent = Arrays.asList(list.get(i).split(","));
// 当没有添加额外参数时
if(content!=null){
callLogInfo = new HashMap();
callLogInfo.put("param1",content.get(0));
callLogInfo.put("param2",content.get(1));
allString.add(callLogInfo);
}
}
return allString;
}
/**
* 读文件数据
*/
public static ListgetSource(byte[] bate) throws IOException {
BufferedReader br = null;
ByteArrayInputStream fis=null;
InputStreamReader isr = null;
try {
fis = new ByteArrayInputStream(bate);
//指定以UTF-8编码读入
isr = new InputStreamReader(fis,"UTF-8");
br = new BufferedReader(isr);
} catch (Exception e) {
e.printStackTrace();
}
String line;
String everyLine ;
ListallString = new ArrayList<>();
try {
//读取到的内容给line变量
while ((line = br.readLine()) != null){
everyLine = line;
allString.add(everyLine);
}
} catch (IOException e) {
e.printStackTrace();
}finally {
if(fis != null){
fis.close();
}
if(isr != null){
isr.close();
}
}
return allString;
}
}
控制器(这里用的springboot):
package com.hanfengyeqiao.gjb.controller.admin;
import com.hanfengyeqiao.gjb.utils.ReadCsvUtil;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;
@Api(tags = "")
@RestController
@RequestMapping("/admin")
public class AdminCertController {
@RequestMapping("/test/upload")
public void upload(HttpServletRequest request, MultipartFile upfile) throws Exception {
if (request.getMethod().equals("POST")) {
byte[] bate =upfile.getBytes();
List> list=ReadCsvUtil.getResource(bate);
if(list!=null){
for(Mapm:list){
System.out.println("param1:"+m.get("param1")+";param2:"+m.get("param2")+"。");
}
}
}
}
}
html代码:
test上传:
示例文件
运行结果
在处理csv文件的时候容易出现编码上的问题,小伙伴们写代码的时候要多注意一下!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
java上传csv错误信息_java处理csv文件上传示例详解相关推荐
- java类的定义的实例_Java中类的定义和初始化示例详解
类的定义 类的定义格式 //创建类 class classname{ field ://成员属性/字段 method://方法 } class为定义类的关键字,classname为类的名字,{ }为类 ...
- java后台验证不能为空_java validation 后台参数验证的使用详解
一.前言 在后台开发过程中,对参数的校验成为开发环境不可缺少的一个环节.比如参数不能为null,email那么必须符合email的格式,如果手动进行if判断或者写正则表达式判断无意开发效率太慢,在时间 ...
- java中的getnumber怎么用_java安全编码指南之:Number操作详解
简介 java中可以被称为Number的有byte,short,int,long,float,double和char,我们在使用这些Nubmer的过程中,需要注意些什么内容呢?一起来看看吧. Numb ...
- java break 在if 中使用_java中使用国密SM4算法详解
前言 上次总结了一下加密算法的分类(加密算法有集中形式,各有什么不同?),现在我们用java语言实现一下SM4:无线局域网标准的分组数据算法.对称加密,密钥长度和分组长度均为128位. ps:我们既可 ...
- java 找出重复的数据_java 查找list中重复数据实例详解
java 查找list中重复数据实例详解 需求: 查找一个list集合中所有重复的数据,重复的数据可能不止一堆,比如:aa, bb, aa, bb, cc , dd, aa这样的数据.如果有重复数据, ...
- java中的守护线的应用_JVM中的守护线程示例详解
前言 在Java中有两类线程:User Thread(用户线程).Daemon Thread(守护线程) 用个比较通俗的比如,任何一个守护线程都是整个JVM中所有非守护线程的保姆: 只要当前JVM实例 ...
- java flv转mp3_Java调用ffmpeg转换视频格式为flv的示例详解
这篇文章主要介绍了 详解java调用ffmpeg转换视频格式为flv的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下 详解java调用ffmpeg转换视频格式为flv 注意:下面的程序是在L ...
- java与与短路与_Java中短路运算符与逻辑运算符示例详解
1.逻辑运算符(部分) 符号 名称 && 短路与运算符 || 短路或运算符 & 与运算符 | 或运算符 对于理工科学习者来说,逻辑运算是较为基础的概念,通常会在大一的离散数学课 ...
- java中的23种设计模式_Java开发中的23种设计模式详解
所谓单例模式,简单来说,就是在整个应用中保证只有一个类的实例存在.就像是Java Web中的application,也就是提供了一个全局变量,用处相当广泛,比如保存全局数据,实现全局性的操作等. [J ...
最新文章
- 无向图--邻接矩阵、连接矩阵、深度遍历、广度遍历、生成树
- 004 关于Java如何扫描指定package下所有的类
- JSON.parse与eval的区别
- KUDU--秒级查询的数据仓库
- Nginx + pserve + supervisord — The Pyramid Cookbook v0.2
- win 2003 联网
- .Net Aop(静态织入)框架 BSF.Aop
- TailwindCSS v3.0 正式发布!一大波新特性来袭!
- windows操作系统自带的端口TCP转发
- v4l2接口,结构图
- 关于如何在vs 2005中使用sa用户登录的问题(即在vs 2005中SQL 2005的深层使用)
- 郭天祥的10天学会51单片机_第一节
- php最新猜骰子精美ui源码,ThinkPHP全新UI猜猜乐H5游戏源码
- MATLAB基础篇——基本语法
- 史诗级Java入门教程,想成为初级程序员看他就够了
- windows各类密码搜集
- 无盘服务器文件管理,云图管家文档图纸管理软件
- 查找计算机里包含相关文字,windows7如何搜索包含关键字的文件_win7电脑文件怎么查关键字文件...
- iOS 自定义转场动画篇
- 关于在VMware上安装Android x86及FTP详细使用
热门文章
- C语言 BMP24位变单色,怎么将24位色BMP图片改为单色或16色?(2)
- OpenCV与图像处理学习三——线段、矩形、圆、椭圆、多边形的绘制以及文字的添加
- 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 16丨市场分析 II【难度困难】​
- MySQL流浪记(七)—— MySQL删除表数据
- Linux 源码安装 Python3 和 pip3
- 生产者-消费者 BlockingQueue 运用示例
- 自己动手制作一门语言(1)波罗语
- wdnas群晖nas_西数WD NAS红盘 WD140EFFX 14TB HDD和 SA500 1TB SSD开箱拆解评测
- LwIP应用开发笔记之十:LwIP带操作系统基本移植
- processing创意图形代码_2020年外贸B2C店铺的黑色星期五创意营销想法(下)