struts2 多文件上传防止重命名

发布于 2021-11-19 10:35:09 字数 1359 浏览 828 评论 5

  <s:form action="upload" method="POST" enctype="multipart/form-data">
    <!-- name为后台对应的参数名称 -->
    	<s:file name="files" label="file1"></s:file>
    	<s:file name="files" label="file2"></s:file>
    	<s:file name="files" label="file3"></s:file>
    	<s:submit value="提交" id="submitBut"></s:submit>
	</s:form>

例如:同时选择三个a.txt上传,为了防止重名加了时间,点击提交,发现

都变成了axxx.txt,还是重名,难道是时间太短,秒都没变化,后来又加了随机数,

随机数也有重复的时候,那怎么才能完全区分

这是重命名和提交的代码

for(int i = 0;i<files.length;i++){
			
	String str = fileUploadRename.fileRename(filesFileName[i]);
	File saveFile = new File(dateDir,str);
	files[i].renameTo(saveFile);
		}

重命名的类:

public class fileUploadRename {
	public static String fileRename(String str){
		
		String formatDate = new SimpleDateFormat("yyMMddHHmmss")
        .format(new Date());
		int last = str.lastIndexOf(".");
		int i = (int) (Math.random()*1000);
		String str_head = str.substring(0,last);
		
		String str_type = str.substring(last);
		
		str = str_head+formatDate+i+str_type;
		return str;
	}
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

恋你朝朝暮暮 2021-11-25 21:24:51

1年前的问题了,我都找不到了,兄弟从哪找的

丢了幸福的猪 2021-11-25 20:44:36

@ldl123292 ? 什么从哪里找的?

囚你心 2021-11-25 17:18:19

可以用时间粒度更小的nanoTime,纳秒,这样就比方法执行本身时间还要短了,不容易重复了

伪装你 2021-11-25 16:38:07

用数据库记录.

上传的时候把文件名命名为uuid.

爱的那么颓废 2021-11-25 11:29:47

采用递归算法可以绝对保证不重名,首先可根据时间来生成文件名,然后检测该文件名是否重命名了,如果重命名则递归再次生成新的文件名知道成功

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文