applicationContext.xml
<!-- 文件上传配置 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 请求编码格式 -->
<property name="defaultEncoding" value="utf-8"></property>
<!-- 上传文件大小(单位:字节) -->
<property name="maxUploadSize" value="50000000"></property>
<!-- 缓冲区大小(单位:KB) -->
<property name="maxInMemorySize" value="10240"></property>
</bean>
Controller
@ResponseBody
@RequestMapping(value = "addLabel", method = RequestMethod.POST)
public ResponseEntity addLabel(@RequestParam(value = "files") MultipartFile files) {
String sourceName = files.getOriginalFilename(); // 原始文件名
String fileType = sourceName.substring(sourceName.lastIndexOf("."));
if (files.isEmpty() || StringUtils.isBlank(fileType)) {
return new ResponseEntity(ResponseEntity.STATUS_FAIL, null, "文件不能为空", null);
}
if (!".txt".equals(fileType.toLowerCase()) && !".csv".equals(fileType.toLowerCase())) {
return new ResponseEntity(ResponseEntity.STATUS_FAIL, null, "文件暂时只支持txt,csv格式", null);
}
// 存放文件临时路径
String base = request.getSession().getServletContext().getRealPath("/upload//"); //获取文件上传的路径,在webapp下的upload中
File file = new File(base);
if (!file.exists()) {
file.mkdirs();
}
// 讲文件上传到临时目录
String path = base + File.separator + sourceName;
File upload = new File(path);
try {
files.transferTo(upload);
} catch (IOException e) {
return new ResponseEntity(ResponseEntity.STATUS_FAIL, null, "文件上传失败,请联系管理员", null);
}
// 解析文件
BufferedReader br = null;
FileReader reader = null;
try {
reader = new FileReader(upload);
br = new BufferedReader(reader);
String line = "";
while ((line = br.readLine()) != null) {
if (line.trim().length() == 11) {
phones.add(line.trim());
}
}
} catch (Exception e) {
log.error("上传文件失败", e);
return new ResponseEntity(ResponseEntity.STATUS_FAIL, null, "读取文件失败,请联系管理员", null);
} finally {
try {
if (reader != null) {
reader.close();
reader = null;
}
if (br != null) {
br.close();
br = null;
}
} catch (Exception e) {
return new ResponseEntity(ResponseEntity.STATUS_FAIL, null, "关闭流失败,请联系管理员", null);
}
// 删除临时文件
if (upload.isFile()) {
upload.delete();
}
}
return new ResponseEntity(ResponseEntity.STATUS_OK);
}