2015-02-23 3 views
1

Я не эксперт PHP, но я пытался загрузить файл изображения с использованием библиотеки GD, но в моем коде отображается ошибка. Затем я попытался выполнить эхо-вывод, но он не показывает временное расположение файла изображения.Ошибка при загрузке изображения с использованием библиотеки PHP GD

Это мой код:

if(isset($_REQUEST['upload_btn'])){ 
$filename = $_FILES['file_upload']['name']; 
list($w,$h)= getimagesize($filename); 
$imgString = $_FILES['file_upload']['tmp_name']; 
echo "Temp = $imgString <br>"; 
echo "Name = $filename <br>"; 
echo "Width = $w <br>"; 
echo "Height = $h"; 
} 

Вот мой HTML код:

<form enctype="multipart/form-data" method="post" target="_self" > 
<input type="file" id="upload" name="file_upload" /> 
<input type="submit" value="upload" name="upload_btn" /> 
</form> 

Выход выше код выглядит следующим образом:

Temp =
Имя = image1.jpg
Ширина = 4440
Высота = 3294

Скажите, пожалуйста, что я делаю неправильно?

+1

Включите отчет об ошибках и попытайтесь выгрузить содержимое вашего массива '$ _FILES', то есть' print_r ($ _ FILES); '. Правильны ли размеры изображения? – Cyclonecode

+2

Вы также можете проверить «ошибку» загрузки, чтобы попытаться выяснить, что не работает 'if ($ _ FILES ['file_upload'] ['error']! = 0) {// произошла какая-то ошибка}'. Вы можете проверить эту страницу для получения списка кодов ошибок: [Ошибки загрузки файлов] (http://php.net/manual/en/features.file-upload.errors.php) – Cyclonecode

+1

@Cyclone Большое спасибо. Эта помощь поможет мне. Я обновляю код, и, надеюсь, моя проблема будет решена. – Abhimanu

ответ

2

$_FILES['file_upload']['name'] - это просто имя файла. На самом деле это невозможно на сервере. если вы не переместите temp_file с помощью метода move_uploaded_file(). Вы должны использовать $_FILES['tmp_name'], который является фактически загруженным файлом.

<?php 
    if(isset($_REQUEST['upload_btn'])){ 
    $filename = $_FILES['file_upload']['name']; 
    $imgString = $_FILES['file_upload']['tmp_name']; 
    list($w,$h)= getimagesize($imgString); 

    echo "Temp = $imgString <br>"; 
    echo "Name = $filename <br>"; 
    echo "Width = $w <br>"; 
    echo "Height = $h"; 
    } 
    ?> 

Это был случай, только если загрузка файла прошла успешно. Если загрузка не удалась, что вызовет ошибку, и это будет номер ошибки, которые могут быть доступны из

$_FILES['file_upload']['error'] 

Если 0, то ваша загрузка была успешной. В противном случае загрузка не удалась. Тогда вы не получите результат в $_FILES['file_upload']['tmp_name']

+1

Если бы вы ** прочитали ** OP, вы бы заметили, что это настоящая проблема. Он говорит, что 'tmp_name' ничего не возвращает. Тем не менее вы правы, когда дело доходит до того, что он будет использовать в вызове 'getimagesize()' – Cyclonecode

+0

@Cyclone ok, я понимаю. вы правы :-) –

+0

, но я использую localhost, а также эта проблема не со всеми изображениями. некоторые файлы показывают temp = C: \ wamp \ tmp \ phpFA82.tmp. так почему некоторые изображения показывают ошибку, а некоторые нет? – Abhimanu

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