Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 每次为我的网站生成一个随机值_Javascript_File Upload_Random_Cgi - Fatal编程技术网

Javascript 每次为我的网站生成一个随机值

Javascript 每次为我的网站生成一个随机值,javascript,file-upload,random,cgi,Javascript,File Upload,Random,Cgi,我正在使用CGI将文件上传到我们公司的网站。在管理面板中,员工可以上传图像,以对应于稍后存储在JSON中的特定对象。所有这些都可以,但是如果员工A上传dog.png,然后员工B上传dog.png。员工B的图片将覆盖员工A的图片,两者都将引用相同的图片。我曾考虑过获取图像的散列并将其命名为自己的散列,问题是,在上传之前读取文件有点粗略,需要浏览器支持(安全问题),然后将其保存到服务器,获取散列,重新保存,然后删除旧文件,速度很慢,而且被黑客攻击 我的问题 考虑到这一点,为每个文件指定唯一名称的最佳

我正在使用CGI将文件上传到我们公司的网站。在管理面板中,员工可以上传图像,以对应于稍后存储在JSON中的特定对象。所有这些都可以,但是如果员工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