2012-04-28 3 views
1

Я пытаюсь переименовать изображение при загрузке его на свой сервер. Есть ли вообще простой способ сделать это? Ниже приведен код php, который я использую. Я хочу переименовать его как переменную, которую я передаю как скрытое поле из html-формы.PHP image uploader переименовать изображение?

//variable from hidden field on form which is from mysql database 
$imageName = $_POST['image_rename']; 

if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/pjpeg")) && ($_FILES["file"]["size"] < 8000000)) 
    { 
    if ($_FILES["file"]["error"] > 0) 
    { 
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />"; 
    } 
    else 
    { 
    echo "Upload: " . $_FILES["file"]["name"] . "<br />"; 
    echo "Type: " . $_FILES["file"]["type"] . "<br />"; 
    echo "Size: " . ($_FILES["file"]["size"]/1024) . " Kb<br />"; 
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />"; 

    if (file_exists("../uploads/" . $_FILES["file"]["name"])) 
     { 
     echo $_FILES["file"]["name"] . " already exists. "; 
     } 
    else 
     { 
     move_uploaded_file($_FILES["file"]["tmp_name"], "../uploads/" . $_FILES["file"]["name"]); 
     echo "Stored in: " . "../uploads/" . $_FILES["file"]["name"]; 
     } 
    } 
    } 
else 
    { 
    echo "Invalid file"; 
    } 
+0

не использовать непроверенную информацию от клиента, он может быть потенциально опасным – ilanco

ответ

1

Попробуйте изменить функцию move_uploaded_file(); добавьте нужное имя в функцию. Просто убедитесь, чтобы захватить правильное расширение, что-то вроде:

$parts=explode('.',$_FILES['file']['name']); 
$newName=$imageName.'.'.$parts[(count($parts)-1)]; 
move_uploaded_file($_FILES['file']['tmp_name'],'../uploads/'.$newName); 
+1

вы можете использовать конец ($ parts); вместо счета - 1 – Sedz

0

Изменить

move_uploaded_file($_FILES["file"]["tmp_name"], "../uploads/" . $_FILES["file"]["name"]); 

в

move_uploaded_file($_FILES["file"]["tmp_name"], "../uploads/" . $imageName); 
+0

никакого расширения не используются – Sedz

+0

Нет, потому что он сказал, что он даст имя файла через скрытый ввод. '$ imageName = $ _POST ['image_rename'];';) – fhugas

Смежные вопросы