上传文件到服务器
@Override public void uploadFile(MultipartFile file) { // 构建上传文件路径和名字 String oriName = file.getOriginalFilename(); // ie低版本浏览器会获取到盘符路径,谷歌不会,故再转一次获取 String fileName =new File(oriName).getName(); String targetPath = ymlConfig.getApplyTablePath() + DateUtil.DateToString(new Date(), DateStyle.YYYYMMDD)+ "/" + fileName; File targetFile = new File(targetPath); // 判断文件夹是否未空,空则创建 if (!targetFile.exists()) { if (!targetFile.getParentFile().exists()) { targetFile.getParentFile().mkdirs(); } targetFile.createNewFile(); }
// 用工具类把文件写入到服务器本地 FileUtil.inputStreamToFile(file.getInputStream(), targetFile); } /** * 上传时获取MultipartFile的流暂存到服务器本地 * @param ins * @param file */ public static void inputStreamToFile(InputStream ins, File file) { try { if (!file.exists()) { if (!file.getParentFile().exists()) { file.getParentFile().mkdirs(); } file.createNewFile(); } OutputStream os = new FileOutputStream(file); int bytesRead = 0; byte[] buffer = new byte[8192]; while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) { os.write(buffer, 0, bytesRead); } os.flush(); os.close(); ins.close(); } catch (Exception e) { log.catching(e); } }