與標題一樣,我想更改用戶通過表單上傳的文件的文件名。這裏是代碼更改通過表單上傳的tmp文件的文件名
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的VAR和它仍然無法正常工作...
代碼
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'勞倫斯...
你就不能調用move_uploaded_file($ tmp_name的值,$位置\ $ username) – 2012-04-22 08:12:17
'move_uploaded_file($ move_to,$ _ FILES ['myfile'] ['tmp_name']); 'thos vars需要互換 – 2012-04-22 09:31:53
@ThatBenderGuy你需要添加像我的第一個if語句 – 2012-04-22 09:34:58