多个或者一个图片上传接口
@Service
public class FileUploadServiceImpl implements FileUploadService {
@Value("${saveFileFolder}")------>存储图片到磁盘的绝对路径
private String saveFileFolder;
@Value("${relPath}") ----->指定服务器存储的真是路径
private String relPath;
@Value("${saveUserPic}")------>指定某项目存储图片路径
private String saveUserPic;
protected final Logger logger = LoggerFactory.getLogger(this.getClass());
@Override
public List<String> saveFile(MultipartFile[] files,String folderName) {
List<String> fileNameList = new ArrayList<String>();
logger.info("============获取文件大小========="+files.length);
// 遍历 每个文件进行存储
for (int i = 0; i < files.length; i++) {
MultipartFile file = files[i];
try {
byte[] bytes = file.getBytes();
logger.info("上传文件第"+i+"个的byte大小::"+bytes.length);
// Creating the directory to store file
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String childFolder = sdf.format(new Date());
File dir = new File(saveFileFolder + File.separator + folderName + File.separator + childFolder);
logger.info("上传文件 保存带服务器下的路径:::::"+saveFileFolder + File.separator + folderName +File.separator + childFolder);
if (!dir.exists())
dir.mkdirs();
// Create the file on server
String name = UUID.randomUUID().toString() + ".jpg";
File serverFile = new File(dir.getAbsolutePath() + File.separator+ name);
logger.info("============获取文件大小========="+serverFile.length());
BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(serverFile));
stream.write(bytes);
stream.flush();
stream.close();
String fileName = relPath + File.separator + folderName + File.separator + childFolder + File.separator + name;
logger.info("============获取文件名称========="+fileName);
fileNameList.add(fileName);
logger.info("上传文件 的保存到数据库中的路径"+fileName);
} catch (Exception e) {
e.getMessage();
logger.info("上传头像的异常"+e.getMessage());
}
}
return fileNameList;
}
/**
* 保存单个 文件
*/
@Override
public String saveOneFile(MultipartFile file) {
String fileName = null;
if (!file.isEmpty()) {
try {
byte[] bytes = file.getBytes();
logger.info("上传头像的byte大小::"+bytes.length);
File dir = new File(saveFileFolder + saveUserPic);
logger.info("上传头像 保存带服务器下的路径:::::"+saveFileFolder + saveUserPic);
if (!dir.exists())
dir.mkdirs();
// Create the file on server
String name = UUID.randomUUID().toString() + ".jpg";
File serverFile = new File(dir.getAbsolutePath() + File.separator + name);
BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(serverFile));
stream.write(bytes);
stream.flush();
stream.close();
fileName = relPath + saveUserPic + File.separator + name;
logger.info("上传头像的保存到数据库中的路径"+fileName);
} catch (Exception e) {
e.getMessage();
logger.info("上传头像异常"+e.getMessage());
e.getMessage();
logger.info("上传头像的异常"+e.getMessage());
}
}
return fileName;
}
}
设定图片大小
注意事项:在与移动端交互的时候要明确若图片为上传则默认为null/空串,那么就要对其进行判空处理!要不就会出现空指针异常情况!!!那么在处理时就要判断这个流的大小进而判断是否有文件过来