-2

可能重复:
唯一密钥生成

将文件上传到服务器时如何自动命名文件?

我用< input type="file" />上传了一个图片文件。文件名为picture_1.jpg。但我想将它存储在文件系统中,名称如下 ec0b4c5173809b6aa534631f3207.jpg?这些新名字是如何产生的?是否有一些特殊的脚本/生成器用于制作此类名称?

例如FB中的图片:http:// a3.sphotos.ak.fbcdn.net/hphotos-ak-snc6/190074_10150167009837952_8062627951_8311631_4439729_n.jpg.

它的名字是190074_10150167009837952_8062627951_8311631_4439729_n.jpg。但原来的名字肯定是不同的。所以我想以同样的方式更改上传文件的名称。这怎么可能?

4

5 回答 5

1

在 PHP 中,我使用uniqid()来命名我从上传存储的文件

如果您想要一个超长或看似更随机的 id,您可以使用sha1()md5() uniqid 来创建哈希。

您当然也可以使用这两种方法来创建文件名的哈希。

例如,以下代码可用于为文件生成新名称

$file = 'somefile.jpg';
$new_name = uniqid();
$new_name .= '.'.pathinfo($file,PATHINFO_EXTENSION);
于 2011-12-24T22:57:40.383 回答
1

你没有提到你使用的是什么编程语言。

在 PHP 中,可以在 array 上找到那个神秘的名称和原始文件名$_FILES

假设您的表单的元素名称是 userfile,您可以从中获取该神秘名称basename($_FILES['userfile']['tmp_name'])和原始名称basename($_FILES['userfile']['name'])

访问这里了解更多信息: http ://www.php.net/manual/en/features.file-upload.post-method.php

于 2011-12-24T23:04:40.577 回答
0

您可以对名称进行 MD5 处理以创建不带空格或点的字符串:md5($filename)(http://php.net/md5) 尽管我不确定您要问的是什么?

编辑:您也可以使用uniqid()(http://php.net/manual/en/function.uniqid.php)

于 2011-12-24T22:55:54.430 回答
0

您只需在将文件从服务器上的临时文件移动到要移动到的位置时重写文件名。

move_uploaded_file($_FILES['userfile']['tmp_name'], $filePN)

其中 &filePN 是您要将文件移动到的位置的路径和名称。

但是,您正在谈论的特殊脚本可以是多种事物,从输入名称的 MD5 哈希到增加的数字以防止覆盖。

于 2011-12-24T22:57:54.183 回答
-1

看起来像一个 GUID。

如果您是 ASP.NET 程序员,请使用以下内容:

string filename = new Guid().ToString() + ".jpg";
于 2011-12-24T22:56:42.483 回答