文件上传同名问题处理
问题描述
张三向服务器上传了一个文件aa.txt内容是helloworld。李四向服务器上传了一个文件aa.txt内容hellojava。后上传的文件会将先上传的文件覆盖。
问题解决
使用唯一文件名进行解决
创建UploadUtils帮助类
分析:我们可以将一个随机字符串和源文件的扩展名结合起来,生成一个唯一的文件名
package com.zjz.utils;
import java.util.UUID;
/**
* 文件上传的工具类
*
* @author admin
*
*/
public class UploadUtils {
/**
*传递一个文件名,返回一个唯一的文件名
*/
public static String getUuidFilename(String filename){
//在java的API中有一个类UUID可以生成随机的字符串
//UUID.randomUUID().toString().replace("-","");
//获得文件名的扩展名.
int index=filename.lastIndexOf(".");
//获得扩展名字符串
String extetions=filename.substring(index);
//返回随机字符串并拼接文件扩展名
return UUID.randomUUID().toString().replace("-","")+extetions;
}
/**
* main方法测试
*/
public static void main(String[] args){
System.out.println(UploadUtils.getUuidFilename("aa.txt"));
}
}
测试结果
思考:生成随机文件名,如何找到源文件?
答:可以把文件原名和随机生成的文件名一起放到数据库里,可通过查询找到对应的文件。
摘要
参考视频:https://www.bilibili.com/video/BV1mE411h7Co?p=305&spm_id_from=pageDriver