Javascript 每次为我的网站生成一个随机值
我正在使用CGI将文件上传到我们公司的网站。在管理面板中,员工可以上传图像,以对应于稍后存储在JSON中的特定对象。所有这些都可以,但是如果员工A上传Javascript 每次为我的网站生成一个随机值,javascript,file-upload,random,cgi,Javascript,File Upload,Random,Cgi,我正在使用CGI将文件上传到我们公司的网站。在管理面板中,员工可以上传图像,以对应于稍后存储在JSON中的特定对象。所有这些都可以,但是如果员工A上传dog.png,然后员工B上传dog.png。员工B的图片将覆盖员工A的图片,两者都将引用相同的图片。我曾考虑过获取图像的散列并将其命名为自己的散列,问题是,在上传之前读取文件有点粗略,需要浏览器支持(安全问题),然后将其保存到服务器,获取散列,重新保存,然后删除旧文件,速度很慢,而且被黑客攻击 我的问题 考虑到这一点,为每个文件指定唯一名称的最佳
dog.png
,然后员工B上传dog.png
。员工B的图片将覆盖员工A的图片,两者都将引用相同的图片。我曾考虑过获取图像的散列并将其命名为自己的散列,问题是,在上传之前读取文件有点粗略,需要浏览器支持(安全问题),然后将其保存到服务器,获取散列,重新保存,然后删除旧文件,速度很慢,而且被黑客攻击
我的问题
考虑到这一点,为每个文件指定唯一名称的最佳方法是什么?文件名根本不重要,只要它遵循保存约定(即no/
或
)。我还必须能够生成文件上传前的名称
我当前使用的内容
- JQuery
- Javascript
- CGI(Python)
- 可能会在javascript中创建guid。然后,您将拥有上载文件的唯一标识符
来自一个较老的SO问题
可能在javascript中创建guid。然后,您将拥有上载文件的唯一标识符 来自一个较老的SO问题
用于在Javascript中的客户端上生成随机名称:
Math.random().toString(16).replace(/\./, '')
要在服务器上使用PHP执行此操作,请执行以下操作:
mt_rand()
用于在Javascript中的客户端上生成随机名称:
Math.random().toString(16).replace(/\./, '')
要在服务器上使用PHP执行此操作,请执行以下操作:
mt_rand()
将图片存储在具有员工ID的目录下,或将员工ID用作文件名的一部分 我不明白为什么你必须在上传之前生成名称,而且它与你的问题文本不匹配,因为在上传之前你不知道上传文件的名称(在你的例子中是dog.png),所以没有命名冲突的危险,除非你两次选择相同的名称
如果在上载之前生成文件名,请在服务器上设置GUID,并完全忽略文件名。将图片存储在带有员工ID的目录下,或将员工ID用作文件名的一部分 我不明白为什么你必须在上传之前生成名称,而且它与你的问题文本不匹配,因为在上传之前你不知道上传文件的名称(在你的例子中是dog.png),所以没有命名冲突的危险,除非你两次选择相同的名称
如果在上载之前生成文件名,请在服务器上设置GUID,完全忽略文件名的实际内容。我有一个类似的系统用于将图像上载到我的产品网站 每个产品都有自己的文件夹,即数据库中产品的ID,但这并不真正相关 这些图片被命名,因为它们是以简单的格式上传的
itemID-TimeAsUnix.jpg
这很好,因为没有时间戳可以重复。如果两个项目同时上传到第二个项目,它就会失败,所以我想单独的文件夹在这里会有所帮助
如果上传频率很低,你可以删除文件夹,或者简单地添加一个额外的随机数,或者可能是一个用户名或其他什么?我有一个类似的系统,用于将图片上传到我的产品网站 每个产品都有自己的文件夹,即数据库中产品的ID,但这并不真正相关 这些图片被命名,因为它们是以简单的格式上传的
itemID-TimeAsUnix.jpg
这很好,因为没有时间戳可以重复。如果两个项目同时上传到第二个项目,它就会失败,所以我想单独的文件夹在这里会有所帮助
如果上传频率很低,您可以删除文件夹,或者简单地附加一个随机数,或者可能是一个用户名或其他什么?TimeAsUnix的想法非常有效!我可能就用这个。我们只是偶尔添加/更改一些东西。我高度怀疑会发生任何形式的冲突。好主意:TimeAsUnix的主意很管用!我可能就用这个。我们只是偶尔添加/更改一些东西。我高度怀疑会发生任何形式的冲突。好主意:D