/**
* 二进制文件上传(前端)
*
* @param multipartFile MultipartFile上传文件的二进制流
* @return fileUploadMap
* @see org.springframework.web.multipart.MultipartFile
*/
public Map<String, String> getFileUpload(MultipartFile multipartFile, String name, String uuid, String type,HttpServletResponse response) {
// MultipartResolver resolver = new CommonsMultipartResolver(httpServletRequest.getSession().getServletContext());
// MultipartHttpServletRequest multipartRequest = resolver.resolveMultipart(httpServletRequest);
// List<MultipartFile> multipartFiles = multipartRequest.getFiles("file");
Map<String, String> fileUploadMap = new HashMap<String, String>();
// for (MultipartFile multipartFile : multipartFiles) {
//获取文件流
InputStream fileInputStream = null;
try {
fileInputStream = multipartFile.getInputStream();
if (null == fileInputStream) {
}
} catch (Exception e) {
this.setError("上传文件:", "获取文件流", e.getMessage());
//
}
//获取uuid作为新的文件名称
String newFileName = UUID.randomUUID().toString();
String dotExtensionName = StringUtil.getDotExtensionName(multipartFile.getOriginalFilename());
//如果有以点开始的正常的文件扩展名,则将文件扩展名附加进来
//如果不存在以点开始的正常的文件扩展名,则直接使用uuid,不附加扩
//展名的方式保存文件
if (dotExtensionName != null) {
newFileName += dotExtensionName;
}
//写文件
File newFile = FileUtil.createUploadDirectoryAndFile(newFileName);
if (newFile == null) {
this.setError("文件名:" + newFile.getPath(), "创建", "失败");
return null;
}
this.setInfo("文件名:" + newFile.getPath(), "创建", "成功");
try {
//将来自InputSteam中的流复制到目标路径下,如果不存在会自动创建,如果存在则会覆盖,然后关闭流。(也有不关闭流的方法,自己查)
FileUtils.copyInputStreamToFile(fileInputStream, newFile);
this.setInfo("文件名:" + newFile.getPath(), "写入", "成功");
} catch (IOException e) {
this.setError("文件名:" + newFile.getPath(), "写入", e.getMessage());
return null;
}
//判断是否存在关联关系
if ((uuid != null) && (!"".equals(uuid))) {
try {
AttachmentInfoModel attachmentInfoModel;
attachmentInfoModel = saveAttachmentInfo(newFileName, name, uuid, type);
if (attachmentInfoModel.attachmentInfoEntity == null) {
this.setError("存储数据库失败", "写入", "失败");
return null;
}
} catch (Exception e) {
this.setError("保存数据库失败", "写入", "失败");
e.printStackTrace();
return null;
}
}
//此处为返给前台的url路径,用来访问文件,并存取到数据库当中
String fileUrl = ProjectUtil.getInstance().getSystemInfo().getAttachmentHost() + "/" + newFileName;
this.setInfo("文件访问路径:" + fileUrl, "生成", "成功");
fileUploadMap.put("fileUrl", fileUrl);
// }
return fileUploadMap;
}
/**
* 获取文件名扩展名不包含点
*
* @param fileName 包含扩展名的文件名称
* @return String 成功返回文件扩展名,失败返回null
*/
public static String getExtensionName(String fileName) {
int lastDotIndex = 0;
String extensionName = null;
if (fileName == null) {
return null;
}
if (fileName.length() == 0) {
return null;
}
lastDotIndex = fileName.lastIndexOf('.');
//如果文件名当中没有.的话返回null
if (lastDotIndex == -1) {
return null;
}
//如果.是整个文件名的最后一个则不再能正确认识扩展名
if (lastDotIndex == fileName.length()) {
return null;
}
//得到文件扩展名不包含点
extensionName = fileName.substring(lastDotIndex + 1);
return extensionName;
}
/**
* 获取文件名扩展名包含点
*
* @param fileName 包含扩展名的文件名称
* @return String 成功返回文件扩展名,失败返回null
*/
public static String getDotExtensionName(String fileName) {
String extensionName = null;
String dotExtensionName = null;
extensionName = getExtensionName(fileName);
if (extensionName == null) {
return null;
}
dotExtensionName = "." + extensionName;
return dotExtensionName;
}