CI4 - 尝试移动图像但出现错误“无法将文件 php6WkH2s 移动到 /var/www/example.com/development.example.com/app_dir/public/ ()
CI4 - Trying to move image but get error "could not move file php6WkH2s to /var/www/example.com/development.example.com/app_dir/public/ ()
我正在尝试上传文件并将其移动到 public/ 文件夹。文件上传到可写文件夹没有问题,但是,移动到 public 文件夹时出现问题。
这是我的代码;
$update_post->move(ROOTPATH.'public/', $update_post.'.'.$fileType);
路径正确。当我回显 echo ROOTPATH.'public/';
然后手动 copy/paste 时,我确实到达了目标目录。
权限正确。我对 public/ 目录有权限:
drwxr-xr-x 9 www-data www-data 4096 Jan 30 01:08 public
感谢任何提示。
原因:
因为move(string $targetPath, ?string $name = null, bool $overwrite = false)
方法的$name
参数无效
$update_post->move( ... , $update_post.'.'.$fileType);
解释:
连接一个 class CodeIgniter\Files\File extends SplFileInfo
实例调用继承的 SplFileInfo
class's __toString()
方法,该方法 return 将文件路径作为字符串。
请注意,它没有 return 文件名,这是您感兴趣的。
解决方案:
您应该改为传入基本名称。
$update_post->move(
ROOTPATH . 'public/',
$update_post->getBasename()
);
或者,由于您 不是 changing the destination filename,不传递 move(...)
方法的第二个参数会更简洁。即:
$update_post->move(
ROOTPATH . 'public'
);
附录:
如果您希望将目标文件名更改为新名称,请尝试以下操作:
Attempts to determine the file extension based on the trusted
getMimeType()
method. If the mime type is unknown, will return null.
This is often a more trusted source than simply using the extension
provided by the filename. Uses the values in app/Config/Mimes.php to
determine extension:
$newFileName = "site_logo"; // New filename without suffixing it with a file extension.
$fileExtension = $update_post->guessExtension();
$update_post->move(
ROOTPATH . 'public',
$newFileName . (empty($fileExtension) ? '' : '.' . $fileExtension)
);
备注:
move(...)
方法 return 为重定位文件创建一个新的 File 实例,因此如果需要结果位置,您必须捕获结果:$newRelocatedFileInstance = $update_post->move(...);
我正在尝试上传文件并将其移动到 public/ 文件夹。文件上传到可写文件夹没有问题,但是,移动到 public 文件夹时出现问题。
这是我的代码;
$update_post->move(ROOTPATH.'public/', $update_post.'.'.$fileType);
路径正确。当我回显 echo ROOTPATH.'public/';
然后手动 copy/paste 时,我确实到达了目标目录。
权限正确。我对 public/ 目录有权限:
drwxr-xr-x 9 www-data www-data 4096 Jan 30 01:08 public
感谢任何提示。
原因:
因为move(string $targetPath, ?string $name = null, bool $overwrite = false)
方法的$name
参数无效
$update_post->move( ... , $update_post.'.'.$fileType);
解释:
连接一个 class CodeIgniter\Files\File extends SplFileInfo
实例调用继承的 SplFileInfo
class's __toString()
方法,该方法 return 将文件路径作为字符串。
请注意,它没有 return 文件名,这是您感兴趣的。
解决方案:
您应该改为传入基本名称。
$update_post->move(
ROOTPATH . 'public/',
$update_post->getBasename()
);
或者,由于您 不是 changing the destination filename,不传递 move(...)
方法的第二个参数会更简洁。即:
$update_post->move(
ROOTPATH . 'public'
);
附录:
如果您希望将目标文件名更改为新名称,请尝试以下操作:
Attempts to determine the file extension based on the trusted
getMimeType()
method. If the mime type is unknown, will return null. This is often a more trusted source than simply using the extension provided by the filename. Uses the values in app/Config/Mimes.php to determine extension:
$newFileName = "site_logo"; // New filename without suffixing it with a file extension.
$fileExtension = $update_post->guessExtension();
$update_post->move(
ROOTPATH . 'public',
$newFileName . (empty($fileExtension) ? '' : '.' . $fileExtension)
);
备注:
move(...)
方法 return 为重定位文件创建一个新的 File 实例,因此如果需要结果位置,您必须捕获结果:$newRelocatedFileInstance = $update_post->move(...);