2015-11-09 2 views
1

Вот часть моего файла PHP, который отвечает за переименование файла и загрузить егоmove_upload_file не работает с изменением расширения

if (0 < $_FILES['file']['error']) { 
    echo 'Error: ' . $_FILES['file']['error'] . '<br>'; 
} 

else { 
    $filename=$_FILES['file']['tmp_name']; 
    $extension=end(explode('.', $filename)); 
    $newfilename=$first_name . '_' . $last_name.'.'.$extension; 
    move_uploaded_file($filename, 'uploads/' .$newfilename); 
} 

Я не уверен, почему файл не будет загружается ?

+0

Вы видите ошибку, или файл не заканчивается там, где вы ожидаете? Каково содержимое вашего массива $ _FILES? – ajshort

+0

Ошибка. Ничего не загружается – ConfusedLife123

ответ

1

Вы не можете напрямую передать взорванный массив, возвращаемый в end(). Также убедитесь, что папка uploads должна иметь действительные разрешения read/write.

Вы пытаетесь получить расширение от $_FILES['file']['tmp_name'], что неверно.

end() -> Параметры ¶ Массив. Этот массив передается по ссылке , потому что он модифицируется функцией. Это означает, что вы должны передать ему действительную переменную , а не функцию, возвращающую массив, потому что только действительные переменные могут передаваться по ссылке.

Для справки см. this.

Попробуйте это:

$filename=$_FILES['file']['name']; //this param contains name of file 
$arr = explode('.', $filename); 
$extension=end($arr); 
$newfilename=$first_name . '_' . $last_name.'.'.$extension; 
move_uploaded_file($_FILES['file']['tmp_name'], 'uploads/' .$newfilename); 
+0

Я использовал код, который вы предоставили, и он по-прежнему не загружается. Он загружается, когда я не изменяю имя во втором параметре move_uploaded_file. Он работает, когда раздел else - это просто 'move_uploaded_file ($ _ FILES ['file'] ['tmp_name'], 'uploads /'. $ _FILES ['file'] ['name']);' – ConfusedLife123

+0

Они должны быть назначены, потому что в одной части моего кода я использую php mail(), и внутри сообщения я использую $ first_name и $ last_name, и их отправляют просто отлично, когда переменные заполняются в письме. Это файл PHP без ваших прав. Http://pastebin.com/Jpm62xED – ConfusedLife123

+0

Ничего не было загружено, когда я использовал метод hardcode. – ConfusedLife123

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