上传后的唯一文件名

时间:2016-08-19 15:02:04

标签: php

我试图在上传后重命名图片。 我希望它是一个独特的名字。

我有这门课程(在互联网上找到):

http://pastebin.com/qQmC256A

我尝试像这样编辑文件:

$upload_image = $target_path.basename($fileName);

$upload_image = $target_path.basename(uniqid($fileName, rand()));

但它只给我一个文件,没有扩展名。

2 个答案:

答案 0 :(得分:0)

还应该发生什么? <book>会生成以下内容:

uniqid

您没有获得扩展名,因为您将文件的扩展名转换为文件名“中间”的一部分。

也许这样的事情会更好:

php > echo uniqid('kittens.jpg', rand());
kittens.jpg57b72004c1a470.87520799
php > echo basename(uniqid('kittens.jpg', rand()));
kittens.jpg57b7201cdce2e9.40812361

答案 1 :(得分:0)

在您提供的图书馆的第26行,有一个名为$file_ext的变量,其中包含您需要的内容。只需将其连接到$upload_image,所以第32行变为:

$upload_image = $target_path.basename(uniqid($fileName, rand())).$file_ext;

即使如here所述,我也会以这种方式获得扩展: $path = $_FILES['image']['name']; $file_ext = pathinfo($path, PATHINFO_EXTENSION);

因为如果文件名是test.tar.gz,则只需.gz作为扩展名。

如果您想使用此方法,可以使用上面的代码替换第22-24行。