在我的页面上,我使用 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()
函数,文件名保持不变。
有人知道,为什么会这样?