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();

map callloginfo ;

list list = new arraylist();

// 获取文件内容

list = getsource(bate);

// 获取文件表头

list title = 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; i

list content = 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 list getsource(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 ;

list allstring = 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(map m:list){

system.out.println("param1:"+m.get("param1")+";param2:"+m.get("param2")+"。");

}

}

}

}

}

html代码:

test

上传:

示例文件

2090fbc8a549055170ab01481654dfc4.png

运行结果

945967e70c0a73a52c70507a408cee2b.png

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

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

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

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

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

相关文章

360更新补丁一直提示正在安装_远程利用POC公布|CVE20200796:微软发布SMBv3协议“蠕虫级”漏洞补丁通告...

更多全球网络安全资讯尽在邑安全www.eansec.com0x00 事件描述2020年3月11日&#xff0c;360CERT监测到有海外厂家发布安全规则通告&#xff0c;通告中描述了一处微软SMBv3协议的内存破坏漏洞&#xff0c;编号CVE-2020-0796&#xff0c;并表示该漏洞无需授权验证即可被远程利用&…

字符串的回文子序列个数_计算给定字符串中回文子序列的数量

字符串的回文子序列个数Problem statement: 问题陈述&#xff1a; Given a string you have to count the total number of palindromic subsequences in the giving string and print the value. 给定一个字符串&#xff0c;您必须计算给定字符串中回文子序列的总数并打印该值…

适配接口 java_【Java 设计模式】接口型模式--Adapter(适配器)模式

简介&#xff1a;【Java设计模式】接口型模式–Adapter(适配器)模式Adapter模式的宗旨就是&#xff1a;向客户提供接口&#xff0c;并使用现有的类所提供的服务&#xff0c;以满足客户的需求。 或者说&#xff0c;现在有classA的方法满足客户的部分要求&#xff0c;将另一部分需…

deepinu盘制作工具_u盘启动盘制作工具怎么制作 u盘启动盘制作工具制作方法【详细步骤】...

在电脑城很多技术人员都会使用u盘装系统的方法给用户电脑安装系统&#xff0c;他们是怎么操作的呢?其实很简单&#xff0c;就是通过u盘启动盘来安装系统的。而u盘启动盘是需要用 u盘启动盘制作工具 来制作的。那么问题又来了&#xff0c;u盘启动盘制作工具怎么制作呢?下面就给…

openstack私有云_OpenStack-下一代私有云的未来

openstack私有云The OpenStack project is an open source cloud computing platform for all types of clouds, which aims to be simple to implement, massively scalable, and feature rich. Developers and cloud computing technologists from around the world create t…

freemarker的测试结果框架_java必背综合知识点总结(框架篇)

框架篇一、Struts1的运行原理在启动时通过前端总控制器ActionServlet加载struts-config.xml并进行解析&#xff0c;当用户在jsp页面发送请求被struts1的核心控制器ActionServlet接收&#xff0c;ActionServlet在用户请求时将请求参数放到对应的ActionForm对象中的成员变量中&am…

python图形界面库哪个好_8个必备的Python GUI库

Python GUI 库有很多&#xff0c;下面给大家罗列常用的几种 GUI库。下面介绍的这些GUI框架&#xff0c;能满足大部分开发人员的需要&#xff0c;你可以根据自己的需求&#xff0c;选择合适的GUI库。1. wxPython wxPython 是一个跨平台的 GUI 工具集&#xff0c;是 Python 语言的…

88是python语言的整数类型_Python基础数据类型题

Python基础数据类型 题 考试时间&#xff1a;三个小时 满分100分&#xff08;80分以上包含80分及格&#xff09; 1&#xff0c;简述变量命名规范&#xff08;3分&#xff09;1.必须是字母&#xff0c;数字&#xff0c;下划线的任意组合。 2.不能是数字开头 3.不能是python中的关…

dcom配置_spring cloud 二代架构依赖组件 全配置放送

一 背景介绍先来看一下我们熟悉的第一代 spring cloud 的组件spring cloud 现在已经是一种标准了&#xff0c;各公司可以基于它的编程模型编写自己的组件 &#xff0c;比如Netflix、阿里巴巴都有自己的一套通过spring cloud 编程模型开发的分布式服务组件 。Spring Cloud 二代组…

olap 多维分析_OLAP(在线分析处理)| OLAP多维数据集和操作

olap 多维分析In the previous article of OLAP, we have seen various applications of OLAP, Various types of OLAP, advantages, and disadvantages of OLAP. In this article, we will learn about the, 在OLAP的上一篇文章中&#xff0c;我们了解了OLAP的各种应用&#x…

每周一书-2016年8月28日到9月4日获奖读者公布

每周一书-2016年8月28日到9月4日获奖读者公布 上次送出的《Bootstrap基础教程》&#xff0c;已经被幸运者收到了。我们先来回顾下《改善C程序代码的125个建议》活动文章下的精彩留言。 这是一段高屋建瓴的评述&#xff0c;足见作者对C语言的了解和热爱层度&#xff0c;当然也得…

python map函数的作用_Python的map函数

map()是 Python 内置的高阶函数&#xff0c;它接收一个函数 f 和一个 list&#xff0c;并通过把函数 f 依次作用在 list 的每个元素上&#xff0c;得到一个新的 list 并返回。 例如&#xff0c;对于list [1, 2, 3, 4, 5, 6, 7, 8, 9] 如果希望把list的每个元素都作平方&#xf…

idea java no sdk_java - intelliJ IDEA 13错误:请选择Android SDK

java - intelliJ IDEA 13错误&#xff1a;请选择Android SDK我已经在Error: Cannot find any configured Android SDK上安装了intelliJ 12.1.2和Error: Cannot find any configured Android SDK。现在我使用intelliJ 13.0.1创建了一个空的android应用程序项目(也使用模拟器作为…

该怎样在KeyShot中进行贴图

2019独角兽企业重金招聘Python工程师标准>>> 在渲染物体的时候&#xff0c;贴图常常是不可缺少的部分&#xff0c;贴图主要用于描述对象表面的物质形态&#xff0c;构造真实世界中自然物质表面的视觉表象。不同的贴图能给人带来不同的视觉感受&#xff0c;KeyShot3D…

6.dubbo常用的xml配置有哪些_【面试篇】必须掌握的Spring 常用注解

阅读文本大概需要5分钟。注解本身没有功能的&#xff0c;就和 xml 一样。注解和 xml 都是一种元数据&#xff0c;元数据即解释数据的数据&#xff0c;这就是所谓配置。本文主要罗列 Spring|Spring MVC相关注解的简介。Spring部分1、声明bean的注解Component 组件&#xff0c;没…

matlab数值计算pdf_Gnuplot科学绘图(九)——栅格以及方程数值解估算

Gnuplot科学绘图系列内容Gnuplot科学绘图(一)——从安装到简单函数绘图(文末有彩蛋)Gnuplot科学绘图(二)——坐标取值范围及刻度(文末有彩蛋)Gnuplot科学绘图(三)——点线风格Gnuplot科学绘图(四)——多组数据绘图Gnuplot科学绘图(五)——输出eps 图片Gnuplot科学绘图(六)——输…

购物商城框架java_基于jsp的购物商城-JavaEE实现购物商城 - java项目源码

基于jspservletpojomysql实现一个javaee/javaweb的购物商城, 该项目可用各类java课程设计大作业中, 购物商城的系统架构分为前后台两部分, 最终实现在线上进行购物商城各项功能,实现了诸如用户管理, 登录注册, 权限管理等功能, 并实现对各类购物商城相关的实体进行管理。该购物…

python return用法_初学Python要了解什么 装饰器知识汇总有哪些

初学Python要了解什么&#xff1f;装饰器知识汇总有哪些&#xff1f;在Python学习过程中&#xff0c;有多种方法对函数和类进行加工&#xff0c;相对于其它方式&#xff0c;装饰器语法简单&#xff0c;代码可读性高。因此&#xff0c;装饰器在Python项目中有广泛的应用&#xf…

串口通信 校验码_一文读懂S7-200 SMART自由口通信!

学习S7-200 SMART时了解到&#xff0c;基于RS485接口可实现一下几种通信&#xff1a;1&#xff09;modbus RTU通信2&#xff09;PPI协议通信3&#xff09;USS协议通信4&#xff09;自由口通信何为自由口通信呢&#xff1f;前三种通信必须要PLC和与其通信的设备支持相同的通信协…

hbase 学习(十三)集群间备份原理

集群建备份&#xff0c;它是master/slaves结构式的备份&#xff0c;由master推送&#xff0c;这样更容易跟踪现在备份到哪里了&#xff0c;况且region server是都有自己的WAL 和HLog日志&#xff0c;它就像mysql的主从备份结构一样&#xff0c;只有一个日志来跟踪。一个master集…