ファイルの移動に困っています。また、ユーザーが別の写真をアップロードして、古い写真を自動的に削除する方法があるかどうかも疑問に思っていますか?
move_uploaded_file(@$_FILES["profilepic"]["tmp_name"],"userdata/".$_POST['username']."/profilepic".$_FILES["profilepic"]["name"]);
ファイルの移動に困っています。また、ユーザーが別の写真をアップロードして、古い写真を自動的に削除する方法があるかどうかも疑問に思っていますか?
move_uploaded_file(@$_FILES["profilepic"]["tmp_name"],"userdata/".$_POST['username']."/profilepic".$_FILES["profilepic"]["name"]);
$_FILES の前に @ を削除し、エラーを確認します。古い画像を新しい画像に置き換えたい場合は、独自のユーザー向けの画像名を作成し、それを使用します。
$_POST['username']=test;
$imagname=$_POST['username']."_img";
move_uploaded_file(@$_FILES["profilepic"]["tmp_name"],"userdata/".$_POST['username']."/profilepic/".$imagename);
このコードブロックを試してください
$imagename = $_FILES['profilepic']['name'];
$source = $_FILES['profilepic']['tmp_name'];
$imagename = str_replace(" ", "_", $imagename);
$target = "userdata/".$_POST['username']."/profilepic" . $imagename;
move_uploaded_file($source, $target);
フォルダへの書き込み権限があることを確認してくださいuserdata
, plmexico
, profilepic
.
良い習慣:
ユーザーのファイルの名前を、アルゴリズムによって生成された名前に変更します。彼らが新しい写真をアップロードするときにプロフィール写真を置き換えたいので、user_id
名前をファイル名と組み合わせることができます。したがって、コードは次のようになります。
$localname = $_FILES['profilepic']['name'];
$imagename = $user_id."_profile".explode(end(",",$localname)); // $user_id is the user's id
$source = $_FILES['profilepic']['tmp_name'];
$imagename = str_replace(" ", "_", $imagename);
$target = "userdata/".$_POST['username']."/profilepic" . $imagename;
move_uploaded_file($source, $target);
ユーザーが別の形式で画像をアップロードした場合、このコードは機能しません。