用php上传后如何重命名文件名?

7 php rename file

如何在上传文件之前或之后重命名文件?我只想重命名文件名,而不是扩展名.

$changeTXT = $_SESSION['username'];
$uploaderName = strtolower($changeTXT);
$changeTXT = strtolower($changeTXT);
$changeTXT = ucfirst($changeTXT);
$filelocation = $_POST['userfile'];
$filename = $_POST['filename'];
$max_size = $_POST['MAX_FILE_SIZE'];

$file = $_FILES['userfile'];

$allowedExtensions = array("wma", "mp3", "wav");

function isAllowedExtension($fileName) {
  global $allowedExtensions;

  return in_array(end(explode(".", $fileName)), $allowedExtensions);
}

if($file['error'] == UPLOAD_ERR_OK) {
  if(isAllowedExtension($file['name'])) {

$uploaddir = "uploads/".$uploaderName."/";

$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {

    echo "Thank you for uploading your music!<br /><br />";

} else {

    echo "Your file did not upload.<br /><br />";

}

    echo "\n";

    echo "<a href='index.php'>Return</a> to index.<br /><br />$uploaddir";

} else {

    echo "You have tried to upload an invalid file type.<br /><br />";

  }

} else die("Cannot upload");
Run Code Online (Sandbox Code Playgroud)

Óla*_*age 22

使用时move_uploaded_file,您可以选择文件名,这样您就可以选择任何你想要的东西.

当您上传文件时,将其放入具有临时名称的临时目录,move_uploaded_file()允许您移动该文件,并且您还需要设置文件的名称.


pix*_*ine 6

我建议你查看Verot的文件上传课程.它通过php恢复文件上传的许多痛苦,并使您的代码更易读/可维护.

这是和文档的链接.

至于问题的准确答案:要为上传的文件指定新名称,请将其作为move_uploaded_file()函数的第二个参数.

由于您要保留扩展名,请先将其存储在变量中:

$ext = explode('.',$_FILES['uploaded']['name']);
$extension = $ext[1];
Run Code Online (Sandbox Code Playgroud)

您可以使用文件根名称生成新名称(此处附加时间戳):

$newname = $ext[0].'_'.time();
Run Code Online (Sandbox Code Playgroud)

假设您上传了一个文件,并且您的表单输入变量名称为"myfile.png",它将变为"myfile_2343544.png";

现在,将本地路径与目标目录,$ newname var和文件扩展名相结合,以设置函数的第二个参数:

$full_local_path = 'path/to/your/filefolder/'.$newname.'.'.$extension ;
move_uploaded_file($_FILES['uploaded']['tmp_name'], $full_local_path);
Run Code Online (Sandbox Code Playgroud)