struts2 多文件上传防止重命名
<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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
1年前的问题了,我都找不到了,兄弟从哪找的
@ldl123292 ? 什么从哪里找的?
可以用时间粒度更小的nanoTime,纳秒,这样就比方法执行本身时间还要短了,不容易重复了
用数据库记录.
上传的时候把文件名命名为uuid.
采用递归算法可以绝对保证不重名,首先可根据时间来生成文件名,然后检测该文件名是否重命名了,如果重命名则递归再次生成新的文件名知道成功