PHP preg_replace删除文件扩展名

时间:2018-11-12 14:50:51

标签: php preg-replace filenames

在我的页面上,我使用 dropzone.js PHP 构建了一个图片上传。那是我上传文件的代码:

<?php

function clean($string) {
  $string = str_replace(' ', '-', $string);
  return preg_replace('/[^A-Za-z0-9\. -]/', '', $string);
}

if(!empty($_FILES)){

  $temp = $_FILES['file']['tmp_name'];
  $ds = DIRECTORY_SEPARATOR;
  $folder = $_POST['path'];
  $destination_path = dirname(__FILE__).$ds.$folder;
  $safeName = clean($temp);
  $targetFile = $destination_path.$safeName;
  move_uploaded_file($temp, $targetFile);
  echo $targetFile;
}

?>

如您所见,我使用顶部的功能clean()来清理文件名,以防止文件名中包含空格,特殊字符,...。

上传完成后,该文件的文件名很奇怪,例如 tmpphpt9jGMU 。当我使用编辑器打开文件时,该文件没有文件扩展名,并且包含象形文字。

显示上传的图像仍然有效。 CSS如下所示:background-image:url(uploads/2017/tmpphpt9jGMU)。图像仍然可以正确显示。

没有clean()函数,文件名保持不变。

有人知道,为什么会这样?

0 个答案:

没有答案