重写照片文件时遇到一些麻烦。我需要将文件名重写为随机字符串。文件上传很好 - 我似乎无法复制文件并将文件名重写为随机字符串。该文件将保留在目录中。
该函数工作正常,我可以在数据库中重写文件名,但它不会重写文件夹中的实际文件。文件夹权限是rwxr-xr-x(755)。
有什么想法吗?
function AfterUpdate(){
$file = $this->file_attachment;
$path_parts = pathinfo($file);
$newFilename = $path_parts['dirname'] . "/" . uniqid() . "." . $path_parts['extension'];
$file_src = $_SERVER['DOCUMENT_ROOT'] . $file;
$newfile_src = $_SERVER['DOCUMENT_ROOT'] . $newFilename;
if (move_uploaded_file($file_src, $newfile_src)){
$this->file_attachment = $newFilename;
}
}
答案 0 :(得分:0)
$newFilename
包含一个路径位置,我想通过查看$path_parts['dirname'] . "/" . uniqid() . "." . $path_parts['extension'];
。
$newFilename
应该是带扩展名的新文件名。
move_uploaded_file
只会将文件从一个文件夹移动到另一个文件夹或相同的文件夹中。但是不会为你创建一个文件夹。
答案 1 :(得分:0)
简单修复。将move_uploaded_file
替换为rename
。该文件不会被移动,只是重命名。
$file = $this->file_attachment;
$path_parts = pathinfo($file);
$newFilename = $path_parts['dirname'] . "/" . uniqid() . "." . $path_parts['extension'];
$file_src = $_SERVER['DOCUMENT_ROOT'] . "/" . $file;
$newfile_src = $_SERVER['DOCUMENT_ROOT'] . "/" . $newFilename;
if (rename($file_src, $newfile_src)){
$this->file_attachment = $newFilename;
}