通过增量保护重复文件名
问题是在本地保存文件上传,并试图找到一种处理重复文件名的好方法。
The issue was saving file uploads locally, and trying to find a nice way to handle duplicate file names.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
该算法不可扩展。上传 n 个同名文件将导致该算法出现 O(n) 行为,从而导致总运行时间为 O(n²),包括 O(n²) 文件系统访问。对于服务器应用程序来说,这不太好。由于文件系统的工作方式,它也无法修复。
更好的解决方案:
如有必要,使用数据库将文件名映射回人类可读的名称。
This algorithm is not scalable. Uploading n files with the same name will cause O(n) behavior in this algorithm, leading to O(n²) total running time, including O(n²) filesystem accesses. That's not pretty for a server app. It also can't be fixed because of how filesystems work.
Better solutions:
Use a database to map filenames back to human-readable names, if necessary.
最好的解决方案就是以 YYYYDDMMHHMMSS 的形式附加时间戳,您一生都不会遇到冲突;)
而且它的时间复杂度也非常低。
您可以做的另一件事..您可以直接跳过名称检查,而是使用文件名 ex.
如果您正在上传,则为“1.jpg”
只需附加 1(timestamp).jpg ,这样您甚至不需要遍历文件系统。希望它能帮助
前。在 PHP 中
Best solution is just attach Time Stamp in form of YYYYDDMMHHMMSS , You won't get conflicts throughout your whole life ;)
Also its Time complexity is very less.
Another thing you can do .. you might skip name check directly and instead with file's name ex.
"1.jpg" if you are uploading
just attach 1(timestamp).jpg , so that you don't even need to iterate through file system. hope it helps
ex. in PHP
我已经制定了自己的解决方案。这里是:
I've made my own solution. Here it is: