CodeIgniter 3プロジェクトをCodeIgniter 4に移行し始めました。
ファイルのアップロード以外はすべて正常に機能します。
ユーザーがアップロードしたファイルを/ writable/uploadsに保存したい。以下は、アップロードしたファイルを目的の場所に移動するために使用するコードです。
$target_dir = '/writable/uploads/recordings/';
$target_file = $target_dir . basename($_FILES["gfile"]["name"]);
$FileType = pathinfo($target_file,PATHINFO_EXTENSION);
if($FileType != "mp3") {
$vmuploadOk = 1;
}
else
$vmuploadOk = 1;
if ($vmuploadOk == 1) {
$greetfile = $id . "g" . basename($_FILES["gfile"]["name"]);
$target_filenew = $target_dir . $greetfile;
move_uploaded_file($_FILES["gfile"]["tmp_name"], $target_filenew);
}
CI4が書き込み可能なフォルダをパブリックフォルダの外に保持しているためだと思います。
これは私にとってはうまくいき、あなたにとってもうまくいくことを願っています。 codeigniter 4では、これを使用してファイルをアップロードし、コントローラーに移動してください。
if($imagefile = $this->request->getFiles())
{
if($img = $imagefile['gfile'])
{
if ($img->isValid() && ! $img->hasMoved())
{
$newName = $img->getRandomName(); //This is if you want to change the file name to encrypted name
$img->move(WRITEPATH.'uploads', $newName);
// You can continue here to write a code to save the name to database
// db_connect() or model format
}
}
}
または
if($img = $this->request->getFile('gfile'))
{
if ($img->isValid() && ! $img->hasMoved())
{
$newName = $img->getRandomName();
$img->move('./public/uploads/images/users', $newName);
// You can continue here to write a code to save the name to database
// db_connect() or model format
}
}
その後、htmlこれを使用
<input type="file" name="gfile">
これがあなたが他の人に私の注意を喚起するのに役立つことを願っています。