@RequestMapping(value = "/uploadOrgid", method = RequestMethod.POST, produces = "text/html;charset=UTF-8")
@ResponseBody
public String uploadOrgid(Model model, MultipartHttpServletRequest multipartRequest,HttpServletResponse response) throws Exception {
MessageBean mess = new MessageBean();
StringBuffer str = new StringBuffer();
for (Iterator it = multipartRequest.getFileNames(); it.hasNext();) {
String key = (String) it.next();
MultipartFile file = multipartRequest.getFile(key);
try {
InputStream ins = file.getInputStream();
BufferedInputStream bfs = new BufferedInputStream(ins);
String code = codeString(bfs);
InputStream insm = file.getInputStream();
//InputStreamReader 要用insm没有去查询过编码的 InputStream 才行,如果用ins 读不到数据
InputStreamReader in = new InputStreamReader(insm,code);
BufferedReader reader = new BufferedReader(in);
String tempString = null;
// 一次读入一行,直到读入null为文件结束
while ((tempString = reader.readLine()) != null) {
str.append(tempString.trim()).append(",");
}
reader.close();
} catch (IOException e) {
logger.error(e.getMessage());
mess.setCode("500");
mess.setContent("读取商户号失败");
return gson.toJson(mess);
}
}
if (str.length() > 0) {
str.deleteCharAt(str.length() - 1);
}
mess.setCode("200");
mess.setContent(str.toString());
return gson.toJson(mess);
}
/**
* 判断文件的编码格式
* @param fileName :file
* @return 文件编码格式
* @throws Exception
*/
private String codeString(BufferedInputStream bin) throws Exception{
int p = (bin.read() << 8) + bin.read();
String code = null;
switch (p) {
case 0xefbb:
code = "UTF-8";
break;
case 0xfffe:
code = "Unicode";
break;
case 0xfeff:
code = "UTF-16BE";
break;
default:
code = "GBK";
}
return code;
}
MultipartHttpServletRequest,ajaxFileUpload上传文件,读取文件乱码问题
最新推荐文章于 2024-08-08 23:18:12 发布