java 文件上传的那些事
奔跑の虾米 人气:0文件上传
逻辑
@Value("${sava_path}") private String sava_path; @Override public String saveFile(MultipartFile multipartFile) { //获取上传文件名 String oldName; // 保存的文件名 String fileName = null; //判断文件是否为空 if (!multipartFile.isEmpty()) { oldName = multipartFile.getOriginalFilename(); fileName = getStringRandom(15) + "." + oldName.substring(oldName.indexOf(".") + 1); //创建文件对象 File file = new File(sava_path + fileName); //判断当前文件夹目录在计算机是否存在 if (!file.getParentFile().exists()) { //创建文件目录 file.getParentFile().mkdirs(); try { //保存文件 multipartFile.transferTo(file); }catch (Exception e){ e.printStackTrace(); return "文件上传失败"; } } else { //判断文件是否存在 if (!file.exists()) { try { //保存文件 multipartFile.transferTo(file); } catch (Exception e) { e.printStackTrace(); } }else{ //重新命名 fileName = getStringRandom(15) + "." + oldName.substring(oldName.indexOf(".") + 1); file = new File(sava_path + fileName); try { //保存文件 multipartFile.transferTo(file); } catch (Exception e) { e.printStackTrace(); } } } } else { return "文件为空"; } return "上传成功"; }
配置
// application.yml 格式 sava_path: D:\testFile\ //application.properties 格式 sava_path=D:\testFile\
按照自己的习惯选其中之一添加在你的配置文件 (sava_path 存放文件的目录)
生成文件名
/** * 时间戳加上传文件的后缀 * System.currentTimeMillis() 时间戳 * oldName.substring(oldName.indexOf(".")+1) 上传文件名中第一次出现.后的所有字符 +1 是为了排除. */ String fileName = System.currentTimeMillis()+"."+oldName.substring(oldName.indexOf(".")+1);
/** * 生成字母加数字的随机数 * @param length 长度 * @return */ public static String getStringRandom(int length) { String val = ""; Random random = new Random(); //参数length,表示生成几位随机数 for (int i = 0; i < length; i++) { String charOrNum = random.nextInt(2) % 2 == 0 ? "char" : "num"; //输出字母还是数字 if ("char".equalsIgnoreCase(charOrNum)) { //输出是大写字母还是小写字母 int temp = random.nextInt(2) % 2 == 0 ? 65 : 97; val += (char) (random.nextInt(26) + temp); } else if ("num".equalsIgnoreCase(charOrNum)) { val += String.valueOf(random.nextInt(10)); } } return val; } /** * getStringRandom(15) 调用上面的方法 给出你所需文件名的长度 * 其他的和时间戳的一致 */ fileName = getStringRandom(15) + "." + oldName.substring(oldName.indexOf(".") + 1);
选择其中的一种 个人喜欢第二个
加载全部内容