使用Uploadify保存随机文件名

时间:2013-11-11 01:59:51

标签: php uploadify

我正在使用Uploadify,当一个人上传文件时,我希望文件名是随机生成的文件名。数字没问题。

这是我正在使用的当前PHP:

<?php

$targetFolder = '/uploads'; 

$verifyToken = md5('unique_salt' . $_POST['timestamp']);

if (!empty($_FILES)) {
  $tempFile = $_FILES['Filedata']['tmp_name'];
  $targetPath = $_SERVER['DOCUMENT_ROOT'] . $targetFolder;
  $targetFile = rtrim($targetPath,'/') . '/' . $_FILES['Filedata']['name'];


// Validate the file type
$fileTypes = array('jpg','jpeg','gif','png','doc','docx','pdf','xlsx','pptx','tiff','tif','odt','flv','mpg','mp4','avi','mp3','wav','html','htm','psd','bmp','ai','pns','eps'); // File extensions
$fileParts = pathinfo($_FILES['Filedata']['name']);

if (in_array($fileParts['extension'],$fileTypes)) {
    move_uploaded_file($tempFile,$targetFile);
    echo '1';
} else {
    echo 'Invalid file type.';
    }
 }
?>

我试过替换它:

$targetFile = rtrim($targetPath,'/') . '/' . $_FILES['Filedata']['name'];

有这个(每this answer):

$fileParts = pathinfo($_FILES['Filedata']['name']);
$targetFile = rtrim($targetPath,'/') . '/' .rand_string(20).'.'.$fileParts['extension'];

但是这没用,事实上,它根本没有停止上传文件。

如何修改脚本以创建随机文件名?注意:我知道几乎没有PHP,请为初学者做出明确答复。

1 个答案:

答案 0 :(得分:1)

我使用uniqid()因为我不知道rand_string是什么或来自哪里,例如

$fileParts = pathinfo($_FILES['Filedata']['name']);
$targetFile = sprintf('%s/%s.%s', $targetPath, uniqid(), $fileParts['extension']);

我从未做过的另一件事是依靠DOCUMENT_ROOT。而是使用相对于当前脚本的路径。例如,假设您的脚本位于文档根目录

$targetPath = __DIR__ . '/uploads';