调整文件上传方法,新增上传Excel文件异常处理,添加中文拼音转换
This commit is contained in:
parent
23b9b21904
commit
0d7caf1781
@ -17,6 +17,7 @@ import org.aspectj.lang.annotation.Aspect;
|
|||||||
import org.aspectj.lang.annotation.Pointcut;
|
import org.aspectj.lang.annotation.Pointcut;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.core.annotation.Order;
|
import org.springframework.core.annotation.Order;
|
||||||
|
import org.springframework.core.io.InputStreamSource;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
@ -126,6 +127,10 @@ public class ApiLogAspect {
|
|||||||
if (arg instanceof WebStatFilter.StatHttpServletResponseWrapper) {
|
if (arg instanceof WebStatFilter.StatHttpServletResponseWrapper) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
// 文件过滤
|
||||||
|
if (arg instanceof InputStreamSource) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (paramValue.length() > 0) {
|
if (paramValue.length() > 0) {
|
||||||
paramValue.append("_wg_");
|
paramValue.append("_wg_");
|
||||||
}
|
}
|
||||||
|
@ -150,5 +150,20 @@ public interface IFileService {
|
|||||||
*/
|
*/
|
||||||
FilePO getFile(Map<String, Object> params) throws SearchException;
|
FilePO getFile(Map<String, Object> params) throws SearchException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保存导入Excel异常文件信息
|
||||||
|
*
|
||||||
|
* @param fileName
|
||||||
|
* @param uploadPath
|
||||||
|
* @param fileSize
|
||||||
|
* @param params
|
||||||
|
*/
|
||||||
|
void saveUploadErrorExcelFileInfo(String fileName, String uploadPath, long fileSize, Map<String, Object> params);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取导入Excel异常文件路径
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
String getUploadExcelErrorPath();
|
||||||
}
|
}
|
||||||
|
@ -93,7 +93,6 @@ public class FileServiceImpl extends AbstractService implements IFileService {
|
|||||||
* @throws SystemException
|
* @throws SystemException
|
||||||
*/
|
*/
|
||||||
private void uploadFile(String token, MultipartFile uploadFile, UploadTypeEnum uploadTypeEnum, Map<String, Object> params) throws SystemException {
|
private void uploadFile(String token, MultipartFile uploadFile, UploadTypeEnum uploadTypeEnum, Map<String, Object> params) throws SystemException {
|
||||||
|
|
||||||
String baseUploadPath = fileProperties.getUploadPath();
|
String baseUploadPath = fileProperties.getUploadPath();
|
||||||
if (StringUtils.isBlank(baseUploadPath)) {
|
if (StringUtils.isBlank(baseUploadPath)) {
|
||||||
throw new SystemException("上传路径未配置");
|
throw new SystemException("上传路径未配置");
|
||||||
@ -110,6 +109,34 @@ public class FileServiceImpl extends AbstractService implements IFileService {
|
|||||||
if (!uploadFile(uploadFile, uploadPath, uploadFileName)) {
|
if (!uploadFile(uploadFile, uploadPath, uploadFileName)) {
|
||||||
throw new SaveException("文件上传失败");
|
throw new SaveException("文件上传失败");
|
||||||
}
|
}
|
||||||
|
saveUploadFileInfo(token, fileName, uploadPath, uploadFileName, fileType, fileSize, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void saveUploadErrorExcelFileInfo(String fileName, String uploadPath, long fileSize, Map<String, Object> params) {
|
||||||
|
saveUploadFileInfo(null, fileName, uploadPath, fileName, "xls", fileSize, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getUploadExcelErrorPath() {
|
||||||
|
String baseUploadPath = fileProperties.getUploadPath();
|
||||||
|
if (StringUtils.isBlank(baseUploadPath)) {
|
||||||
|
throw new SystemException("上传路径未配置");
|
||||||
|
}
|
||||||
|
return getUploadPath(baseUploadPath, UploadTypeEnum.ERROR_EXCEL, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保存文件信息
|
||||||
|
*
|
||||||
|
* @param token
|
||||||
|
* @param fileName
|
||||||
|
* @param uploadPath
|
||||||
|
* @param uploadFileName
|
||||||
|
* @param fileType
|
||||||
|
* @param fileSize
|
||||||
|
*/
|
||||||
|
private void saveUploadFileInfo(String token, String fileName, String uploadPath, String uploadFileName, String fileType, long fileSize, Map<String, Object> params) {
|
||||||
String fixPath = uploadPath.replace(fileProperties.getUploadPath(), "");
|
String fixPath = uploadPath.replace(fileProperties.getUploadPath(), "");
|
||||||
if ("\\".equals(File.separator)) {
|
if ("\\".equals(File.separator)) {
|
||||||
fixPath = fixPath.replace("\\", "/");
|
fixPath = fixPath.replace("\\", "/");
|
||||||
@ -389,6 +416,8 @@ public class FileServiceImpl extends AbstractService implements IFileService {
|
|||||||
throw new FileException("音频格式不支持上传");
|
throw new FileException("音频格式不支持上传");
|
||||||
}
|
}
|
||||||
filePath.append("audios");
|
filePath.append("audios");
|
||||||
|
} else if (uploadTypeEnum.getValue() == UploadTypeEnum.ERROR_EXCEL.getValue()) {
|
||||||
|
filePath.append("errorexcels");
|
||||||
} else {
|
} else {
|
||||||
if (hasFileType && !isTypeCorrect(getFileTypes(), fileType)) {
|
if (hasFileType && !isTypeCorrect(getFileTypes(), fileType)) {
|
||||||
throw new FileException("文件格式不支持上传");
|
throw new FileException("文件格式不支持上传");
|
||||||
|
@ -18,6 +18,7 @@ import org.springframework.stereotype.Component;
|
|||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
import javax.servlet.http.HttpSession;
|
import javax.servlet.http.HttpSession;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -219,4 +220,20 @@ public abstract class AbstractService {
|
|||||||
throw new SearchException(resultObj.getString("msg"));
|
throw new SearchException(resultObj.getString("msg"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 简单Excel的Header
|
||||||
|
*
|
||||||
|
* @param names
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
protected List<List<String>> simpleExcelHeader(String... names) {
|
||||||
|
List<List<String>> listHeaders = new ArrayList<>();
|
||||||
|
for (String name : names) {
|
||||||
|
List<String> listHeader = new ArrayList<>();
|
||||||
|
listHeader.add(name);
|
||||||
|
listHeaders.add(listHeader);
|
||||||
|
}
|
||||||
|
return listHeaders;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,7 @@ package com.cm.common.enums;
|
|||||||
**/
|
**/
|
||||||
public enum UploadTypeEnum {
|
public enum UploadTypeEnum {
|
||||||
|
|
||||||
FILE(1), IMAGE(2), VIDEO(3), AUDIO(4);
|
FILE(1), IMAGE(2), VIDEO(3), AUDIO(4), ERROR_EXCEL(5);
|
||||||
private int value;
|
private int value;
|
||||||
|
|
||||||
UploadTypeEnum(int value) {
|
UploadTypeEnum(int value) {
|
||||||
|
@ -1,6 +1,13 @@
|
|||||||
package com.cm.common.utils;
|
package com.cm.common.utils;
|
||||||
|
|
||||||
|
|
||||||
|
import net.sourceforge.pinyin4j.PinyinHelper;
|
||||||
|
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
|
||||||
|
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
|
||||||
|
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
|
||||||
|
import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
|
||||||
|
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
|
||||||
|
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
@ -167,9 +174,9 @@ public class WStringUtil {
|
|||||||
if (letter.length() == 0) {
|
if (letter.length() == 0) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if(i == 0) {
|
if (i == 0) {
|
||||||
sb.append(letter);
|
sb.append(letter);
|
||||||
} else {
|
} else {
|
||||||
int firstLetter = letter.charAt(0);
|
int firstLetter = letter.charAt(0);
|
||||||
firstLetter -= 32;
|
firstLetter -= 32;
|
||||||
sb.append((char) firstLetter).append(letter.substring(1));
|
sb.append((char) firstLetter).append(letter.substring(1));
|
||||||
@ -206,4 +213,73 @@ public class WStringUtil {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取拼音
|
||||||
|
*
|
||||||
|
* @param src
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static String getPingYin(String src) {
|
||||||
|
char[] t1 = null;
|
||||||
|
t1 = src.toCharArray();
|
||||||
|
String[] t2 = new String[t1.length];
|
||||||
|
HanyuPinyinOutputFormat t3 = new HanyuPinyinOutputFormat();
|
||||||
|
t3.setCaseType(HanyuPinyinCaseType.LOWERCASE);
|
||||||
|
t3.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
|
||||||
|
t3.setVCharType(HanyuPinyinVCharType.WITH_V);
|
||||||
|
String t4 = "";
|
||||||
|
int t0 = t1.length;
|
||||||
|
try {
|
||||||
|
for (int i = 0; i < t0; i++) {
|
||||||
|
// 判断是否为汉字字符
|
||||||
|
if (java.lang.Character.toString(t1[i]).matches("[\\u4E00-\\u9FA5]+")) {
|
||||||
|
t2 = PinyinHelper.toHanyuPinyinStringArray(t1[i], t3);
|
||||||
|
t4 += t2[0];
|
||||||
|
} else {
|
||||||
|
t4 += java.lang.Character.toString(t1[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return t4;
|
||||||
|
} catch (BadHanyuPinyinOutputFormatCombination e1) {
|
||||||
|
e1.printStackTrace();
|
||||||
|
}
|
||||||
|
return t4;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取中文首字母
|
||||||
|
*
|
||||||
|
* @param str
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static String getPinYinHeadChar(String str) {
|
||||||
|
String convert = "";
|
||||||
|
for (int j = 0; j < str.length(); j++) {
|
||||||
|
char word = str.charAt(j);
|
||||||
|
String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(word);
|
||||||
|
if (pinyinArray != null) {
|
||||||
|
convert += pinyinArray[0].charAt(0);
|
||||||
|
} else {
|
||||||
|
convert += word;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return convert;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 汉字转ASCII码
|
||||||
|
*
|
||||||
|
* @param cnStr
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static String getCnASCII(String cnStr) {
|
||||||
|
StringBuffer strBuf = new StringBuffer();
|
||||||
|
byte[] bGBK = cnStr.getBytes();
|
||||||
|
for (int i = 0; i < bGBK.length; i++) {
|
||||||
|
// System.out.println(Integer.toHexString(bGBK[i]&0xff));
|
||||||
|
strBuf.append(Integer.toHexString(bGBK[i] & 0xff));
|
||||||
|
}
|
||||||
|
return strBuf.toString();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
21
pom.xml
21
pom.xml
@ -26,6 +26,7 @@
|
|||||||
<spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
|
<spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
|
||||||
<durid.version>1.0.31</durid.version>
|
<durid.version>1.0.31</durid.version>
|
||||||
<fastjson.version>1.2.24</fastjson.version>
|
<fastjson.version>1.2.24</fastjson.version>
|
||||||
|
<easyexcel.version>2.0.5</easyexcel.version>
|
||||||
<pagehelper.version>5.1.1</pagehelper.version>
|
<pagehelper.version>5.1.1</pagehelper.version>
|
||||||
<httpclient.version>4.5.6</httpclient.version>
|
<httpclient.version>4.5.6</httpclient.version>
|
||||||
<jodaTime.version>2.9.4</jodaTime.version>
|
<jodaTime.version>2.9.4</jodaTime.version>
|
||||||
@ -55,6 +56,7 @@
|
|||||||
<jedis.version>2.9.0</jedis.version>
|
<jedis.version>2.9.0</jedis.version>
|
||||||
<swagger.version>2.5.0</swagger.version>
|
<swagger.version>2.5.0</swagger.version>
|
||||||
<zxing.version>3.3.3</zxing.version>
|
<zxing.version>3.3.3</zxing.version>
|
||||||
|
<pingyin4j.version>2.5.1</pingyin4j.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
@ -102,12 +104,21 @@
|
|||||||
</dependency>
|
</dependency>
|
||||||
<!-- Spring end -->
|
<!-- Spring end -->
|
||||||
|
|
||||||
<!-- fastjson -->
|
<!-- fastjson start -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.alibaba</groupId>
|
<groupId>com.alibaba</groupId>
|
||||||
<artifactId>fastjson</artifactId>
|
<artifactId>fastjson</artifactId>
|
||||||
<version>${fastjson.version}</version>
|
<version>${fastjson.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<!-- fastjson end -->
|
||||||
|
|
||||||
|
<!-- easyexcel start -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.alibaba</groupId>
|
||||||
|
<artifactId>easyexcel</artifactId>
|
||||||
|
<version>${easyexcel.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- easyexcel end -->
|
||||||
|
|
||||||
<!-- MySQL start -->
|
<!-- MySQL start -->
|
||||||
<dependency>
|
<dependency>
|
||||||
@ -317,6 +328,14 @@
|
|||||||
<version>${zxing.version}</version>
|
<version>${zxing.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- zxing end -->
|
<!-- zxing end -->
|
||||||
|
|
||||||
|
<!-- pingyin start -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.belerweb</groupId>
|
||||||
|
<artifactId>pinyin4j</artifactId>
|
||||||
|
<version>${pingyin4j.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- pingyin end -->
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<dependencyManagement>
|
<dependencyManagement>
|
||||||
|
Loading…
Reference in New Issue
Block a user