タイトルのように、ユーザーがフォームからアップロードするファイルのファイル名を変更したいとします。ここにコードがあります
HTML
<form action="editprofile.php" method="POST" enctype="multipart/form-data">
<p>Upload your image:<p /><input type="file" name="myfile"></p><br />
<p><input type="radio" name="type" value="defaultDot">Use Default</p>
<p><input type="submit" name="updateAvatar"></p>
</form>
そして、これがアップロードされたファイルを正しいディレクトリ
PHPに移動する私のphpスクリプトです
$name = $_FILES['myfile']['name'];
$tmp_name = $_FILES['myfile']['tmp_name'];
$size = getimagesize($_FILES['myfile']['tmp_name']);
if($name){
//start upload process
if($size != FALSE){
$location = "images/avatars/$name";
move_uploaded_file($tmp_name, $location);
$query = mysql_query("UPDATE users SET avatar='$location' WHERE id=$id");
$avaMessage = '<p><font size=2 color=aqua face=Tahoma>Avatar Updated - Uploaded Image!.</font></p>';
}else{
$avaMessage = '<p><font size=2 color=red face=Tahoma>Please only submit image files!</font></p>';
}
}
画像にカスタム名を付けるにはどうすればよいですか? たとえば、ユーザー名のセッション変数を格納する$usernameという変数があります。$username変数に同じファイル拡張子 を付けて画像に名前を付けたい場合はどうすればよいですか?
編集: 編集: 編集:
if ステートメント ローレンスを追加し、move_upload_files の変数を交換しましたが、まだ機能しません...
コード
if($_SERVER['REQUEST_METHOD']=='POST' && isset($username) && is_numeric($id)
&& isset($_FILES['myfile']['error']) && $_FILES['myfile']['error']=='UPLOAD_ERR_OK'){
if($_POST['type'] != "defaultDot"){
//$avaURL = $_POST['url'];
//$updateURL = mysql_query("UPDATE users SET avatar='$avaURL' WHERE id=$id");
//$avaMessage = '<p><font size=2 color=aqua face=Tahoma>Avatar Uploaded!</font></p>';
$name = basename($_FILES['myfile']['name']);
$ext = end(explode('.', $name));
$move_to = "images/avatars/".preg_replace('/[^a-zA-Z0-9.-]/s', '_',$username).'.'.$ext;
$info = getimagesize($_FILES['myfile']['tmp_name']);
if($name){
//start upload process
$allowed = array('image/png','image/jpg','image/gif');
if($info[0]>0 && $info[1] > 0 && in_array($info['mime'],$allowed)){
if($info[0]>200 || $info[1] > 200){
//File dimensions too large
$avaMessage = '<p><font size=2 color=red face=Tahoma>File dimensions too large.</font></p>';
}else{
//File put contents will over write if file exsist
move_uploaded_file($_FILES['myfile']['tmp_name'], $move_to);
mysql_query("UPDATE users
SET avatar='".mysql_real_escape_string($move_to)."'
WHERE id=".$id." AND owner='".$_SESSION['username']."'");
$avaMessage = 'Avatar Updated - Uploaded Image!.';
}
}else{
$avaMessage = '<p><font size=2 color=red face=Tahoma>Please only submit image files!</font></p>';
}
}else{
$avaMessage = '<p><font size=2 color=red face=Tahoma>Please select a file!</font></p>';
}
}else{
$avaURL = 'images/avatars/default.png';
$updateURL = mysql_query("UPDATE users SET avatar='$avaURL' WHERE id=$id");
$avaMessage = '<p><font size=2 color=aqua face=Tahoma>Avatar Updated - Default.</font></p>';
}
}
修正された「POST」ローレンスでもまだ機能していません...