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上传:

示例文件

dd0ccfe3f4c9fb6677b18ef199030fd4.png

运行结果

a20c583b13b82cc0c787974b8461ad3c.png

在处理csv文件的时候容易出现编码上的问题,小伙伴们写代码的时候要多注意一下!

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/506117.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

暗金色 rgb_杜伽TAURUS K310樱桃RGB红轴体验:做工精良、手感优秀

前言DURGOD杜伽的机械键盘一直以简约的外形和优秀的手感而备受好评。笔者之前用过杜伽的K310、K320两个系列的多把键盘&#xff0c;对其非常熟悉&#xff0c;外形简约大方&#xff0c;手感、灯效也比较满意。正因如此&#xff0c;这次刚刚入手了一把杜伽K310 RGB樱桃红轴&#…

vim 显示行号_Vim给文件加行号,这通惊为天人的操作没sei了!文末天书慎点

引言一般 Vim 使用 :set number 命令&#xff0c;在编辑器显示行号。本文展示了如何将行号插入到正文中&#xff0c;或者只插入到段落中。此外&#xff0c;还提供了打印行号的选项(Vim 可以打印带有数字的行&#xff0c;并且不需要文件有数字)。Vim可以使用 :s 命令在每行之前插…

java 获取对象方法有哪些方法有哪些方法有哪些_Java中创建String 对象的方法有哪些...

Java中创建String 对象的方法有哪些发布时间&#xff1a;2020-11-25 16:45:30来源&#xff1a;亿速云阅读&#xff1a;71作者&#xff1a;Leah这篇文章将为大家详细讲解有关Java中创建String 对象的方法有哪些&#xff0c;文章内容质量较高&#xff0c;因此小编分享给大家做个参…

vb中怎么使图片适应框的大小_叮!VB考前练习了解一下?

1、Visual Basic窗体设计器的主要功能是(C )。A) 画图B) 编写源程序代码C) 建立用户界面D) 显示文字解析&#xff1a;Visual Basic窗体设计器简称窗体(Form)&#xff0c;是应用程序最终面向用户的窗口&#xff0c;它对应于应用程序的运行结果。各种图形、图像、数据等都是…

苹果切换输入法_日语输入法哪个好

在初学日语的时候经常会遇到一些不认识的词&#xff0c;想查一下这个词是什么意思&#xff0c;应该怎么输入呢?尝试过许多软件之后&#xff0c;テツ为大家总结了一些认为比较好用的输入法百度IME输入法。下载安装后的切换非常简单&#xff0c;在右下角输入法处切换至JP日语即可…

python 10个100以内随机整数编辑_你要偷偷的学Python,然后惊呆所有人(第五天) - python阿喵

标题无意冒犯&#xff0c;就是觉得这个广告挺好玩的前言前期回顾&#xff1a;你要偷偷学Python&#xff0c;然后惊呆所有人(第四天)在第四天的时候&#xff0c;我们接触了Python的模块调用&#xff0c;这也是Python能够火起来的一大优势。我们还实践了csv模块。不过冷静下来想想…

安卓开发怎么调用photopicker_谷歌出手整顿安卓应用程序乱象:无良权限的APP们再见了!...

相信你在使用安卓手机的时候一定有过这样的经历&#xff0c;在明确拒绝了软件调用电话、手机通讯录、短信等敏感内容的访问权后&#xff0c;APP表示无法继续运行然后强退。如果这款APP不具备可替代性&#xff0c;恐怕最终结果是&#xff0c;用户不得不选择妥协。关于应用程序度…

react router官方文档_阿里开源可插拔 React 跨端框架 UmiJS

点击上方“开发者技术前线”&#xff0c;选择“星标”18&#xff1a;30 在看 真爱作者&#xff1a;Tamic | 编辑&#xff1a; 可可阿里之前开源&#xff1a;阿里闲鱼开源 Flutter 应用框架 Fish Redux&#xff01; 今天介绍的是前端React 框架- UmiJS。介绍umi官方宣称是一个…

java约瑟夫环迭代器_Josephus约瑟夫环问题的不同实现方法与总结

/************************************************************************//* Josephus问题——数组实现 *//************************************************************************/#include #include int Josephus(int t…

ios 下拉放大 上拉缩小_为啥鞠婧祎发量这么多?截图放大十倍她的“发缝”,网友:真密集...

​鞠婧祎&#xff0c;这位女明星真的是黑&#xff0c;红&#xff0c;黑&#xff0c;红。这不是秘密。鞠婧祎最近几天的确很受欢迎。甚至头发也受到质疑。一般而言&#xff0c;娱乐业的演艺人员由于多年来的工作时间安排不规则以及采取巴拉克拉法帽的行为&#xff0c;通常都有使…

opencv4.5.0安装包_UG NX12.0 软件介绍(附安装包)

【软件名称】 UG NX12.0【文件大小】 5.67GB 【语言支持】 简体中文【系统类型】 64位【兼容系统】 Win7 / Win8 / Win10【下载链接】 文末扩展链接获取软件简介&#xff1a;西门子公司推出了最新版的Siemens NX 12.0版本(UG12.0)&#xff0c;该软件提供了当今市场上唯一可扩展…

win7备份工具_win7系统小白一键系统详细教程

很多朋友给小白留言说&#xff0c;使用了新版小白的一键备份后&#xff0c;不知道如何还原系统。体验过新版的朋友们最大的感受就是这个工具越来越小了。接下来&#xff0c;win7系统的一键还原将为您带来一个详细的教程。在系统一键备份方面&#xff0c;如何减少系统一键还原&a…

iis php网站500错误原因_如何解决iis php 500错误问题

iis php500错误的解决办法&#xff1a;1、打开PHP.ini&#xff0c;设置显示错误&#xff1b;2、把“require(./xxx.php)”改成“require(xxx.php)”&#xff1b;3、给网站的上级目录赋予iis用户读权限即可。推荐&#xff1a;《PHP视频教程》本方法适用于任何品牌的电脑。IIS 配…

win10右键一直转圈_Win10总是自动更新?教你如何关掉自动更新

小白系统免费的人工客服点击联系win10怎么关闭自动更新呢&#xff1f;平时不定期的对系统进行更新虽然可以给让我电脑的运行变得更加流畅&#xff0c;但是&#xff0c;不少用户却遇到了win10更新之后不兼容等一系列的问题&#xff0c;因此&#xff0c;就都将要将自动更新功能关…

springboot 中文文档_还在用 Swagger生成接口文档?我推荐你试试它

JApiDocs是一个无需额外注解、开箱即用的SpringBoot接口文档生成工具。编写和维护API文档这个事情&#xff0c;对于后端程序员来说&#xff0c;是一件恼人但又不得不做的事情&#xff0c;我们都不喜欢写文档&#xff0c;但除非项目前后端代码都是自己写的&#xff0c;否则API文…

wringPi 初始化GPIO 为上拉_玩转GPIO之PWM点亮呼吸灯(非树莓派)

在这篇文章&#xff0c;我介绍了基于逸宸电子开发的总线适配器来点亮LED灯的基本方法&#xff01;myastrotong&#xff1a;玩转GPIO之点灯&#xff08;非树莓派&#xff09;​zhuanlan.zhihu.com这款总线适配器的介绍见这里&#xff1a;工业级高速USB转SPI I2C PWM GPIO UART C…

dnf如何快速拾取物品_DNF手游泰拉该如何获取,游戏蜂窝辅助托管快速获取泰拉...

在DNF手游中&#xff0c;一共存在三种的核心货币——点券&#xff0c;泰拉还有金币。点券是用来买商城道具的主要流动货币&#xff0c;金币则是用来打造装备的&#xff0c;而泰拉是有两种货币的共同点&#xff0c;所以它既能在商城购买各种道具&#xff0c;又能兑换金币。所以说…

java商城_java网上商城系统怎么样?优势又有哪些?

导读&#xff1a;大家都知道Java是一款非常实用的开发语言&#xff0c;而通过Java开发的商城吸引也因为其强大安全性能与使用性能等优势受到了很多企业商家的青睐&#xff0c;那么一款功能丰富的Java商城系统也自然成为...大家都知道Java是一款非常实用的开发语言&#xff0c;而…

php socket keepalive,linux keepalive探测对应用层socket api的影响

问题大部分人都知道tcp的keepalive. 假设读者知道keepalive会如何触发. 这篇文章想讨论keepalive触发后, 对socket使用者的影响.keepalive设置修改/etc/sysctl.confubuntu# vim /etc/sysctl.confubuntu# sysctl -pfs.file-max 131072net.ipv4.tcp_keepalive_time 10net.ipv4.…

qt 文字倾斜投影_帅呆!钢铁侠中的激光投影键盘终于量产了,炫酷又好用

看过电影《钢铁侠》的朋友&#xff0c;估计都会被钢铁侠的各种黑科技所折服&#xff0c;比如钢铁装甲、全息投影、人工智能贾维斯等等。不过这些黑科技想要实现还需要一段时间。但其中有一项黑科技已经被国产厂商实现了&#xff0c;那就是——激光投影键盘。早在去年&#xff0…