我正在尝试设置 Jodit WYSIWYG,但我发现他们的文档相当混乱。我正在寻找一种在上传时更改文件名的方法。
原因:如果我在根目录中上传了同名的文件名,它将被替换为旧文件。
那么,如何在上传作废时更改文件名替换旧名称文件。
这里的程序是上传图像 3 文件 1.jpg,2.jpg,3.jpg
当调试模式文件的名称在
$files = $_FILES[$source->defaultFilesKey];
在功能上
public function move(Config $source) {
$files = $_FILES[$source->defaultFilesKey];
/**
* @var $output File[]
*/
$output = [];
try {
if (isset($files) and is_array($files) and isset($files['name']) and is_array($files['name']) and count($files['name'])) {
foreach ($files['name'] as $i => $file) {
if ($files['error'][$i]) {
throw new \Exception(isset(Helper::$upload_errors[$files['error'][$i]]) ? Helper::$upload_errors[$files['error'][$i]] : 'Error', $files['error'][$i]);
}
$path = $source->getPath();
$tmp_name = $files['tmp_name'][$i];
$new_path = $path . Helper::makeSafe($files['name'][$i]);
if (!move_uploaded_file($tmp_name, $new_path)) {
if (!is_writable($path)) {
throw new \Exception('Destination directory is not writeble', Consts::ERROR_CODE_IS_NOT_WRITEBLE);
}
throw new \Exception('No files have been uploaded', Consts::ERROR_CODE_NO_FILES_UPLOADED);
}
$file = new File($new_path);
try {
$this->accessControl->checkPermission($this->getUserRole(), $this->action, $source->getRoot(), pathinfo($file->getPath(), PATHINFO_EXTENSION));
} catch (\Exception $e) {
$file->remove();
throw $e;
}
if (!$file->isGoodFile($source)) {
$file->remove();
throw new \Exception('File type is not in white list', Consts::ERROR_CODE_FORBIDDEN);
}
if ($source->maxFileSize and $file->getSize() > Helper::convertToBytes($source->maxFileSize)) {
$file->remove();
throw new \Exception('File size exceeds the allowable', Consts::ERROR_CODE_FORBIDDEN);
}
$output[] = $file;
}
}
} catch (\Exception $e) {
foreach ($output as $file) {
$file->remove();
}
throw $e;
}
return $output;
}
所以 $file 将名称文件保存在数组中
我需要 foreach $fiels 并更改 array['name'] 值。但我不知道如何改变它。
在我尝试后更新我得到了一个解决方案,将 foreach 语句用于循环 $files['name']。
public function move(Config $source) {
$files = $_FILES[$source->defaultFilesKey];
foreach ($files['name'] as $i => $file) {
$files['name'][$i] = round(microtime(true)).($files['name'][$i]);
}
/**
* @var $output File[]
*/
$output = [];
.
.
.
}