0

私は 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'];

これで(この回答ごとに):

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

しかし、それは機能しませんでした。実際、ファイルのアップロードがまったく停止しました。

スクリプトを変更してランダムなファイル名を作成するにはどうすればよいですか? 注: 私は PHP をほとんど知りません。初心者向けに回答を明確にしてください。

4

1 に答える 1

1

何がどこから来たuniqid()のかわからないので、使用します。rand_string

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

私が絶対にしないもう 1 つのことは、に依存することですDOCUMENT_ROOT。代わりに、現在のスクリプトからの相対パスを使用してください。たとえば、スクリプトがドキュメント ルートにあるとします。

$targetPath = __DIR__ . '/uploads';
于 2013-11-11T02:09:48.870 に答える