一、读取用户上传的csv文件并且保存到db
- 前端代码
<div>
// 改变原有输入框的样式
<button onclick="import()" class="btn btn-sm btn-danger pull-right">
<i class="fa fa-upload"></i>
import
</button>
// 将原有的输入框隐藏
<input type="file" style="display:none" id="upload" onchange="upload(this)">
</div>
function import() {
$('#upload').click()
}
function upload(file) {
let temp = file.files[0];
let formData = new FormData();
formData.append('file',temp);
$.ajax({
url: '${fileUploadUrl}',
type: 'post',
data: formData,
processData: false,
contentType: false,
success: function (response) {
if(response.code == 'SUCC' ){
if (response.data.length > 0){
new PNotify({
text: 'upload file success !! \n'+ response.data,
type: 'error',
styling: 'bootstrap3'
});
}else {
new PNotify({
text: 'upload file success !! ' ,
type: 'success',
styling: 'bootstrap3'
});
}
}else {
new PNotify({
text: 'upload file error !! \n' + response.data,
type: 'error',
styling: 'bootstrap3'
});
}
}
})
$('#upload').prop("value","");
}
- 后端代码
// csv工具
package com.hkt.adminportal.utils;
import java.util.ArrayList;
import java.util.List;
import com.hkt.adminportal.entity.CSVExportable;
public class CSVUtils {
private static final char DEFAULT_SEPARATOR = ',';
private static final char DEFAULT_QUOTE = '"';
private static final char SLASH_CHAR = '/';
public static String createCsvFromList(List<? extends CSVExportable> list) {
if (list != null && list.size() > 0) {
StringBuilder builder = new StringBuilder();
builder.append(list.get(0).toCVSHeader() + "\n");
for (CSVExportable csv : list) {
builder.append(csv.toCSVRow() + "\n");
}
return builder.toString();
} else {
return "";
}
}
public static List<String> parseLine(String cvsLine) {
return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE);
}
public static List<String> parseLine(String cvsLine, char separators) {
return parseLine(cvsLine, separators, DEFAULT_QUOTE);
}
public static List<String> parseLine(String cvsLine, char separators, char customQuote) {
List<String> result = new ArrayLi