私が作成した「temp」というフォルダに現在アップロードされている画像をユーザーがアップロードできるアップロードフォームがあり、その場所は$ _SESSION ['uploaded_photos']という配列に保存されています。ユーザーが[次のページ]ボタンを押したら、その直前に動的に作成された新しいフォルダーにファイルを移動します。
if(isset($_POST['next_page'])) {
if (!is_dir('../images/uploads/listers/'.$_SESSION['loggedin_lister_id'])) {
mkdir('../images/uploads/listers/'.$_SESSION['loggedin_lister_id']);
}
foreach($_SESSION['uploaded_photos'] as $key => $value) {
$target_path = '../images/uploads/listers/'.$_SESSION['loggedin_lister_id'].'/';
$target_path = $target_path . basename($value);
if(move_uploaded_file($value, $target_path)) {
echo "The file ". basename($value). " has been uploaded<br />";
} else{
echo "There was an error uploading the file, please try again!";
}
} //end foreach
} //end if isset next_page
使用されている$ valueの例は次のとおりです。
../images/uploads/temp/IMG_0002.jpg
また、使用されている$ target_pathの例は次のとおりです。
../images/uploads/listers/186/IMG_0002.jpg
ファイルが一時フォルダーにあるのがわかります。どちらのパスも私にはよく見え、mkdir関数が実際にうまく機能するフォルダーを作成したことを確認しました。
PHPを使用してファイルを別のフォルダーに移動するにはどうすればよいですか?
シナリオを読んでいると、アップロードを処理してファイルを「temp」フォルダーに移動したようです。次に、新しいアクション([次へ]ボタンをクリック)を実行したときにファイルを移動します。
PHPに関する限り、 'temp'内のファイルはアップロードされていないため、move_uploaded_fileを使用できなくなります。
あなたがする必要があるのは使用することだけです 名前の変更 :
if(isset($_POST['next_page'])) {
if (!is_dir('../images/uploads/listers/'.$_SESSION['loggedin_lister_id'])) {
mkdir('../images/uploads/listers/'.$_SESSION['loggedin_lister_id']);
}
foreach($_SESSION['uploaded_photos'] as $key => $value) {
$target_path = '../images/uploads/listers/'.$_SESSION['loggedin_lister_id'].'/';
$target_path = $target_path . basename($value);
if(rename($value, $target_path)) {
echo "The file ". basename($value). " has been uploaded<br />";
} else{
echo "There was an error uploading the file, please try again!";
}
} //end foreach
} //end if isset next_page