Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проблемы с загрузкой файла на сервер
 
 автор: Tim4ik   (05.07.2010 в 10:25)   письмо автору
 
 

Доброго времени суток!
Есть проблема, неполучается закачать файл на сервер, Немогу понять в чем проблема, вроде все правильно!
Ниже код из скрипта:


<?

$action 
$_GET['action'];

if(!empty(
$action) AND $action == "add_partnership") {

$file_name=time().".jpg";
$file_path=$_SERVER['DOCUMENT_ROOT']."/img/partnership/".$file_name;

if(
move_uploaded_file($_FILES["adv_img"]["tmp_name"],$file_path)) {
print 
"<div style='clear:both; font-family:Tahoma; font-size:12px; padding:10px; text-align:center;'>Запись добавлена! <a href='suit-partnership.php' class='link'>Вернуться назад</a></div>";
} else {
print 
"<div style='clear:both; font-family:Tahoma; font-size:12px; padding:10px; text-align:center;'>Не удалось закачать картинку. <a href='suit-partnership.php' class='link'>Вернуться назад</a></div>";
}

} else {

<
form action="?action=add_partnership" method="post" enctype="multipart/form-data">
<
input name="adv_img" type="file" style="width:100%;">
<
center><input type="submit" value="загрузить" class="form"></center>
</
form>

}

?>


Вобщем в браузере выдает
Не удалось закачать картинку. Вернуться назад

  Ответить  
 
 автор: Лена   (05.07.2010 в 10:31)   письмо автору
 
   для: Tim4ik   (05.07.2010 в 10:25)
 


} else {
echo '
<form action="?action=add_partnership" method="post" enctype="multipart/form-data">
<input name="adv_img" type="file" style="width:100%;">
<center><input type="submit" value="загрузить" class="form"></center>
</form>';


  Ответить  
 
 автор: Tim4ik   (05.07.2010 в 10:33)   письмо автору
 
   для: Лена   (05.07.2010 в 10:31)
 

Спасибо!
Но дело не в этом, дело в самом скрипте... К тому же chmod на папку в которую загружаю файл выставлен 777...
Вот я и не догоняю в чем дело...

  Ответить  
 
 автор: sim5   (05.07.2010 в 10:40)   письмо автору
 
   для: Tim4ik   (05.07.2010 в 10:33)
 

Прежде чем if(move_uploaded_file($_FILES["adv_img"]["tmp_name"]....
нужно проверить $_FILES["adv_img"]["error"]

  Ответить  
 
 автор: Tim4ik   (05.07.2010 в 10:44)   письмо автору
 
   для: sim5   (05.07.2010 в 10:40)
 

Немогли бы Вы написать код использования этой функции?

  Ответить  
 
 автор: sim5   (05.07.2010 в 10:51)   письмо автору
 
   для: Tim4ik   (05.07.2010 в 10:44)
 

Это не функция, это один из ключей массива $_FILES, который извлекайте и проверяйте.
И прежде чем перемещать файл в папку, вы проверьте сперва, что вам забросили, хотя бы ради приличия что-ли.
Ищите темы "Загрузка файлов на сервер и безопасность", читайте сначала это, а уж потом пишите скрипт свой.

  Ответить  
 
 автор: Tim4ik   (05.07.2010 в 10:55)   письмо автору
 
   для: sim5   (05.07.2010 в 10:51)
 

Ну вообщем понятно... Мне проверки не нужны, так как этим скриптом будет пользоваться один человек, который проинструктирован... Ну вообщем это как бы дополнение к цмс системы загрузка кортинки в определенное место.

Я создал эту тему только потому что непонятно почему не загружается файл... На мой взгляд все правильно вроде, хотя конечно я мог что-то упустить...

  Ответить  
 
 автор: sim5   (05.07.2010 в 11:02)   письмо автору
 
   для: Tim4ik   (05.07.2010 в 10:55)
 

Ну если не нужны, майтесь.... но вот ключ 'error', как раз и надо проверять.

  Ответить  
 
 автор: Tim4ik   (05.07.2010 в 11:04)   письмо автору
 
   для: sim5   (05.07.2010 в 11:02)
 

Ок спасибо! Ща попробую сделать как Вы сказали!

  Ответить  
 
 автор: sim5   (05.07.2010 в 11:07)   письмо автору
 
   для: Tim4ik   (05.07.2010 в 11:04)
 

Это не я говорю, об этом официальный мануал говорит.

  Ответить  
 
 автор: Лена   (05.07.2010 в 10:40)   письмо автору
 
   для: Tim4ik   (05.07.2010 в 10:33)
 

Вывод ошибок у вас прописан?
В начало скрипта поставьте error_reporting(E_ALL);
Что выдает?

Или сделайте по приходу $_FILES:
var_dump($_FILES);
PS. Я ваш скрипт только что и на локалхосте, и на хосте проверила, у меня все нормально.
Кроме, конечно, нотайса Notice: Undefined index: action in Z:\home\class_2\www\file.php on line 3.

  Ответить  
 
 автор: Tim4ik   (05.07.2010 в 10:58)   письмо автору
 
   для: Лена   (05.07.2010 в 10:40)
 

Браузер показал следующее:

Notice: Undefined index: adv_img in /home/ecofrien/public_html/aventgroup.uz/admin/suit-partnership.php on line 10

Может с настройками хоста что-то не так? потому что на локалке у меня тоже все прикрасно работает!

  Ответить  
 
 автор: Tim4ik   (05.07.2010 в 11:48)   письмо автору
 
   для: Tim4ik   (05.07.2010 в 10:25)
 

Вообщем дела такие.

В конфигурации все включенно. Но скрипт не получает файл.

я попробывал вывести информацию о файле:


echo ("имя загружаемого файла: ".$_FILES['adv_img']['name']."<br>");
echo ("mime/type файла: ".$_FILES['adv_img']['type']."<br>");
echo ("размер загруженного файла: ".$_FILES['adv_img']['size']."<br>");
echo ("полный путь к временному файлу: ".$_FILES['adv_img']['tmp_name']."<br>");
echo ("код ошибки: ".$_FILES['adv_img']['error']."<br>");


все поля в брайзере выводятся пустые...

имя загружаемого файла:
mime/type файла:
размер загруженного файла:
полный путь к временному файлу:
код ошибки:


что делать... Помогите плиз.

  Ответить  
 
 автор: Slo_Nik   (05.07.2010 в 11:59)   письмо автору
 
   для: Tim4ik   (05.07.2010 в 11:48)
 

>Notice: Undefined index: adv_img in /home/ecofrien/public_html/aventgroup.uz/admin/suit-partnership.php on line 10

если Вам выдало такое предупреждение, то в массив $_FILES естественно ни чего не попадает.
уберите это предупреждение, найдите причину, почему у Вас не определяет $_FILES['adv_img']

p.s. Ваш скрипт вполне рабочий, проверил, всё грузит нормально

  Ответить  
 
 автор: sim5   (05.07.2010 в 13:38)   письмо автору
 
   для: Tim4ik   (05.07.2010 в 11:48)
 

Уже кое что. Осталось заглянуть в php.ini и проверить доступна ли загрузка: file_uploads = On.

  Ответить  
 
 автор: Tim4ik   (05.07.2010 в 13:43)   письмо автору
 
   для: sim5   (05.07.2010 в 13:38)
 

загрузка включена, к тому же max_file_size стоит на 1000мб
максимальный размер POST стоит на 1000мб

я уже почти в панике, незнаю что делать....

вот еще раз мадифицированный скрипт:


<?

$action 
$_GET['action'];
$id $_GET['id'];

if(
$action == "add_partnership") {



echo (
"имя загружаемого файла: ".$_FILES['file1']['name']."<br>");
echo (
"mime/type файла: ".$_FILES['file1']['type']."<br>");
echo (
"размер загруженного файла: ".$_FILES['file1']['size']."<br>");
echo (
"полный путь к временному файлу: ".$_FILES['file1']['tmp_name']."<br>");
echo (
"код ошибки: ".$_FILES['file1']['error']."<br>");

$path $_SERVER['DOCUMENT_ROOT']."/img/partnership";
$attrib "rwxrwxrwx";
chmod($path$attrib);

if(
is_uploaded_file($_FILES['file1']['tmp_name'])) {
$file_name=time().".jpg";
$file_path=$path."/".$file_name;
@
move_uploaded_file($_FILES['file1']['tmp_name'], $file_path);
$size_img=GetImageSize($file_path);
$img_w $size_img[0];
$img_h $size_img[1];
$old_im = @imageCreateFromJpeg($file_path) or die("Неудалось загрузить в память, только что загруженную картинку с размерами $img_w х $img_h");
$new_im = @imagecreatetruecolor($img_w$img_h) or die("Неудалось создать в памяти новою картинку с размером $img_w х $img_h");
imagefill($new_im000xFFFFFF);
imageCopyResized($new_im$old_im0000$img_w$img_h$img_w$img_h);
imageJpeg($new_im$file_path100);
imageDestroy($old_im);
imageDestroy($new_im);

$link $_POST[link];
mysql_query("INSERT INTO partnership VALUES ('$id','$file_name','$link')") or die("<center><b>Произошла ошибка добавления записи</b></center>");
print 
"<div style='clear:both; font-family:Tahoma; font-size:12px; padding:10px; text-align:center;'>Запись добавлена! <a href='suit-partnership.php' class='link'>Вернуться назад</a></div>";
} else {
print 
"<div style='clear:both; font-family:Tahoma; font-size:12px; padding:10px; text-align:center;'>Не удалось закачать картинку. <a href='suit-partnership.php' class='link'>Вернуться назад</a></div>";
}



} else {



$p mysql_query("SELECT * FROM partnership WHERE id LIKE '3' LIMIT 1");
if(
$partnership=mysql_fetch_array($p)) {
echo <<<data
<center><div style="width:32%; float:left; border:1px solid #000; margin:5px;">
<div><img src="../img/partnership/
$partnership[img]" /></div>
<div style="font-family:Tahoma; font-size:12px; padding:10px;">
<a href="
$partnership[link]" target="_blank">$partnership[link]</a>
</div>
<div style="text-align:center; padding:5px;"><a href="?action=delete_partnership&id=3" class="link">удалить</a></div>
</div></center>
data;
} else { 
echo <<<data
<center><div style="width:32%; float:left; border:1px solid #000; margin:5px; height:60px;">
<form action="?action=add_partnership&id=3" method="post" enctype="multipart/form-data">
<input name="file1" type="file" style="width:100%;">
<div style="font-family:Tahoma; font-size:10px; padding:3px;">Размер картинки должен соответствовать размеру 170х80px</div>
<input name="link" type="text" style="width:100%" value="http://www.exemple.com">
<div style="font-family:Tahoma; font-size:10px; padding:3px;">Линк обязательно нужно писать полностью</div>
<input type="submit" value="загрузить" class="form"></center>
</form>
</div>
data;
}



}

?>


На лакалке все отлично работает...

  Ответить  
 
 автор: sim5   (05.07.2010 в 13:48)   письмо автору
 
   для: Tim4ik   (05.07.2010 в 13:43)
 

Ужас, иначе и не скажешь. Интересно бы посмотреть на картинку размером в 1 ГБ, и хостера который такие размеры грузить по HTTP позволяет.
Выбрасывайте свой скрипт, напишите просто, форму и прием простой для проверки (вывод ошибок обязятелен!), и загружайте махонький файл, печатайте принятый массив $_FILES. Ошибки? Массив?

  Ответить  
 
 автор: Tim4ik   (05.07.2010 в 14:45)   письмо автору
 
   для: sim5   (05.07.2010 в 13:48)
 


<?

$action 
$_GET['action'];
$id $_GET['id'];

if(
$action == "add_partnership") {

$path $_SERVER['DOCUMENT_ROOT']."/img/partners/";
$file_name=time().".jpg";
$file_path=$path."".$file_name;

$file_error $_FILES['file1']['error'];

$print_file_error["1"] = "Размер принятого файла превысил максимально допустимый размер разрешенный сервером.";
$print_file_error["3"] = "Загружаемый файл был получен только частично.";
$print_file_error["4"] = "Файл не был загружен.";

if(!empty(
$file_error)) { $print_file_error $print_file_error[$file_error]; } else { $print_file_error "Произошла ошибка загрузки файла по непонятным причинам.."; }

if(
is_uploaded_file($_FILES['file1']['tmp_name'])) {
move_uploaded_file($_FILES['file1']['tmp_name'], $file_path);
$link $_POST[link];
mysql_query("INSERT INTO partnership VALUES ('$id','$file_name','$link')") or die("<center><b>Произошла ошибка добавления записи</b></center>");
print 
"<div style='clear:both; font-family:Tahoma; font-size:12px; padding:10px; text-align:center;'>Запись добавлена! <a href='suit-partnership.php' class='link'>Вернуться назад</a></div>";
} else {
print 
"<div style='clear:both; font-family:Tahoma; font-size:12px; padding:10px; text-align:center;'>$print_file_error. <a href='adv-add.php' class='link'>Вернуться назад</a></div>";
}

} else {

echo <<<data
<center><div style="width:32%; float:left; border:1px solid #000; margin:5px; height:60px;">
<form action="?action=add_partnership&id=3" method="post" enctype="multipart/form-data">
<input name="file1" type="file" style="width:100%;">
<div style="font-family:Tahoma; font-size:10px; padding:3px;">Размер картинки должен соответствовать размеру 170х80px</div>
<input name="link" type="text" style="width:100%" value="http://www.exemple.com">
<div style="font-family:Tahoma; font-size:10px; padding:3px;">Линк обязательно нужно писать полностью</div>
<input type="submit" value="загрузить" class="form"></center>
</form>
</div>
data;

}

?>


вот адрес где находится скрипт:
http://aventgroup.uz/admin/adv-add.php

  Ответить  
 
 автор: sim5   (05.07.2010 в 15:12)   письмо автору
 
   для: Tim4ik   (05.07.2010 в 14:45)
 

Все проблемы на сервере - это к хостеру.
А скрипт ужасен. Будет один человек грузить у вас? И он будет таки резать до 170х80px? И проверки вам побоку?
Функция move_uploaded_file() проверяет, что перемещаемый файл загружен через HTTP POST, поэтому в данном случае применять функцию is_uploaded_file() нет смысла.

  Ответить  
 
 автор: Tim4ik   (05.07.2010 в 15:26)   письмо автору
 
   для: sim5   (05.07.2010 в 15:12)
 

ну да один человек, который будет резать... Ну вобщем не проблема, ща сделаю и проверку.

Спасибо за уделенное время!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования