Автор Тема: Проблем със РНР скрипт за upload на файлове  (Прочетена 3677 пъти)

senser

  • Напреднали
  • *****
  • Публикации: 1328
    • Профил
Здравейте,

Работя в момента върху един web интерфейс за управление на съдържанието на site базиран на LAMP.
Имам проблем със скрипта, който обработва файловете (картинки, pdf, ....) за качване, и по-точно проблема е не със скрипта, а с предаването на информацията за файловете, които се качват.
По-конкретно: формата за избор на файл за upload съдържа:
Примерен код

<form enctype = "multipart/form-data" action = "upload_man_pic.php" method = "POST">
<input type = "hidden" name = "MAX_FILE_SIZE" value = "1000000">
Upload file Manual: &nbsp <input name = "file_manual" type = "file"> <br/><br/>


Ето и част от upload_man_pic.php
Примерен код

$file_manual = $HTTP_POST_FILES['file_manual']['tmp_name'];


Като резултат $file_manual не съдържа нищо ...... '<img'>
Целият глобален масив $HTTP_POST_FILES също е празен.
files_upload е разрешен в php.ini.
Ето още допълнителна инфо, която евентуално може да е от полза:
http://87.126.43.38:777/php_info.php
Активен

  • Гост
Проблем със РНР скрипт за upload на файлове
« Отговор #1 -: Jan 28, 2006, 16:38 »
Я пробвай с $_FILES да го достъпваш, не през HTTP_POST_FILES.
Активен

Hapkoc

  • Напреднали
  • *****
  • Публикации: 2117
    • Профил
Проблем със РНР скрипт за upload на файлове
« Отговор #2 -: Jan 28, 2006, 17:01 »
Аз друго да кажа само, не съвсем по темата.

Понеже гледам br таговете си ги затворил както е по xhtml стандарта, а input тага не. Следвай един стандарт навсякъде, после няма да се чудиш нещо защо тук работи а там не.

И също - май не е много коректно да се слага интервал между името на атрибут и знака за равенство, както и между знака за равенство и стойността на атрибута.

А по темата и аз си мисля, че с $_FILES трябва да стане. С $HTTP_POST_FILES също май трябва да работи ако сложиш
Примерен код

global $HTTP_POST_FILES;


Поздрави
Активен

senser

  • Напреднали
  • *****
  • Публикации: 1328
    • Профил
Проблем със РНР скрипт за upload на файлове
« Отговор #3 -: Jan 29, 2006, 11:41 »
Пробвал съм с "_FILES", както и с PUT вместо POST(ясно е че с GET не става....), но без резултат.
Относно <input> tag-овете: принципно ги затварям, но като пишех пост-а тук не сметнах, че ще е от значение и затова съм ги оставил така (<br/> по инерция го пиша затворен).
Поправете ме ако греша, но $HTTP_POST_FILES не е ли глобален масив, и според мен е излишно аз да го декларирам като такъв (пробвах и този вариант, но не работи).

Почнах да си мисля, че съм пропуснал нещо в конфигурирането на апач-а, но скрипта се държи по същия начин и на друг сървър .......
Активен

Йордан

  • Напреднали
  • *****
  • Публикации: 1451
  • Distribution: Ubuntu / Gentoo
  • Window Manager: Gnome
  • не е важно колко ти е голяма пишката, а какво можеш с нея
    • Профил
    • WWW
Активен

Всеки пост - отговор на въпрос !!!

Йордан Георгиев
http://ygeorgiev.net/

senser

  • Напреднали
  • *****
  • Публикации: 1328
    • Профил
Проблем със РНР скрипт за upload на файлове
« Отговор #5 -: Jan 29, 2006, 12:43 »
Цитат (GigaVolt @ Ян. 29 2006,13:17)
http://it-place.org/index.p....rcid=30

Мерси за линк-а, но аз правя същото нещо в скрипт-а с тази разлика, че не "капсулирано" в клас.
Съмнявам се, че и класа който си дал за upload ще сработи при положение, че sizeof($HTTP_POST_FILES) e 0.
Активен

Йордан

  • Напреднали
  • *****
  • Публикации: 1451
  • Distribution: Ubuntu / Gentoo
  • Window Manager: Gnome
  • не е важно колко ти е голяма пишката, а какво можеш с нея
    • Профил
    • WWW
Проблем със РНР скрипт за upload на файлове
« Отговор #6 -: Jan 29, 2006, 13:13 »
Примерен код

  //**************************************
    //    
    // Name: File uploader/indexer
    // Description:This code indexs files, u
    //     ploads, and deletes. PLease vote for me!
    //    
    // By: InteractiveWebGuys
    //
    // Returns:It out puts a table to the br
    //     owser that shows each file.
    //
    // Side Effects:none as of now
    //
    //This code is copyrighted and has    // limited warranties.Please see http://
    //     http://www.Planet-Source-Code.com/vb/scripts/Sh
    //     owCode.asp?txtCodeId=594&lngWId=8    //for details.    //**************************************
    //    
    
    <?php
    error_reporting(0);
    //this turns off error reporting we doth
    //     is so that we don't get a warning for th
    //     e $action variable
    $destination=".";
    //the directory that the script index's
    //     if you want the current directory put a
    //     "." if you want another folder
    //put "foldername"
    if ($action=='delete')
    {
    $del = unlink("./$destination/$fle");
    }
    echo '<FONT SIZE="+2" COLOR="FF9A00"><CENTER>File manager</CENTER></FONT><BR><BR><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=o><TR><TD ALIGN=center WIDTH=200 bgcolor=FFECCE><CENTER>Filename:</CENTER></TD><TD ALIGN=center WIDTH=200 bgcolor=FFECCE><CENTER>Functions:</CENTER></TD><TD ALIGN=center WIDTH=200 bgcolor=FFECCE><CENTER>Filesize(in bytes):</CENTER></TD><TD ALIGN=center WIDTH=150 bgcolor=FFECCE><CENTER>Filetype:</CENTER></TD><TD ALIGN=center WIDTH=150 bgcolor=FFECCE><CENTER>Created on:</CENTER></TD></TABLE>';
    $directory = opendir($destination);
    while( $file = readdir( $directory ) )
    {
    $file_ar[] = $file;
    }
    foreach( $file_ar as $file )
    {
    if( $file == ".." || $file == "." )
    {
    continue;
    }
    $type= strrchr($file,'.');
    $name=$file;
    $name2=$destination."/".$file;
    if($type==''){$type='dir';}
    $sizeoff=filesize($name2);
    $time=date("D M j Y",filectime($name2));
    if($time=='Wed Dec 31 1969'){$time='Unknown';}
    if($sizeoff==''){$sizeoff='Unknown';}
    if($sizeoff=='0'){$sizeoff='Unknown';}
    $file2 = dirname($name2);
    if($color == "FF9A00") {
    $color = "FFECCE";
    } else {
    $color = "FF9A00";
    }
    echo"<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=o><TR><TD ALIGN=center WIDTH=200 bgcolor='$color'><a href='$uname/$file' target=_blank>$name</a></font></TD><TD ALIGN=center WIDTH=200 bgcolor='$color'><A HREF='$PHP_SELF?action=delete&fle=$file&der=$uname'>Delete</A><TD ALIGN=center WIDTH=200 bgcolor='$color'>$sizeoff</TD> <TD ALIGN=center WIDTH=150 bgcolor='$color'>$type</TD><TD ALIGN=center WIDTH=150 bgcolor='$color'>$time</TD></TABLE>";
    }
    echo "<CENTER><FONT SIZE='+2' COLOR=\"FF9A00\"><BR><BR>Uploader</FONT></CENTER><BR><BR><FORM ACTION='$PHP_SELF' METHOD=post enctype=\"multipart/form-data\">File:<BR><INPUT TYPE='file' size='20' name='filename'><BR><CENTER> <input type=\"hidden\" name=\"action\" value=\"uploadProg\"><INPUT TYPE='hidden' name='action' value='upload'><INPUT TYPE='submit' value='Upload File'></CENTER></FORM>";
    closedir($directory);
    if($action==''){$action='noaction';}else{$action=$action;}
    if($action=='upload')
    {
    $filename==$filename_name;
    $action=('uploadprog');
    $destination=".";
    copy($filename,$destination."/".$filename_name);
    echo "<h2>File Uploaded.</h2>";
    echo "<HEAD><META HTTP-EQUIV='Refresh' CONTENT=1></HEAD>";
    }
    if ($filename=="none") {echo("<h1>No File Selected....</h1>"); break;}
    uploadProg($filename,$filename_name);
    break;
    ?>
Активен

Всеки пост - отговор на въпрос !!!

Йордан Георгиев
http://ygeorgiev.net/

Йордан

  • Напреднали
  • *****
  • Публикации: 1451
  • Distribution: Ubuntu / Gentoo
  • Window Manager: Gnome
  • не е важно колко ти е голяма пишката, а какво можеш с нея
    • Профил
    • WWW
Активен

Всеки пост - отговор на въпрос !!!

Йордан Георгиев
http://ygeorgiev.net/

  • Гост
Проблем със РНР скрипт за upload на файлове
« Отговор #8 -: Jan 29, 2006, 14:33 »
Доколкото си спомням HTTP_POST_FILES след една версия на PHP вече не е актуален...и се използва $_FILES.
Така че пробвай пак с него.
Активен

senser

  • Напреднали
  • *****
  • Публикации: 1328
    • Профил
Проблем със РНР скрипт за upload на файлове
« Отговор #9 -: Jan 29, 2006, 14:44 »
Цитат (Guest @ Ян. 29 2006,15:33)
Доколкото си спомням HTTP_POST_FILES след една версия на PHP вече не е актуален...и се използва $_FILES.
Така че пробвай пак с него.

А аз това което съм чел е обратно ...... т.е. за да работи кода и на по-стари версии на РНР, трябва да се използва $HTTP_POST_FILES, но както и да е - казах вече, че пробвах и не става. Още повече, че достъпвам другите променливи от глобалните масиви по-този "old-style" начин без проблеми.
Скрипт-а на GigaVolt също не сработва. В момента го разучавам, но ми се струва поне на пръв поглед, че има някои .......... "особености", така че ако някой може да го пробва дали сработва при него ще ми е от полза (прдполагам че при GigaVolt работи '<img'>) )

@GigaVolt: Мерси за времето и вниманието '<img'>. Линка към РНР ръководството е почти идентичен с това което аз правя, с тази разлика, че при  мен не тръгва '<img'>......... явно изпукам нещо
Активен

senser

  • Напреднали
  • *****
  • Публикации: 1328
    • Профил
Проблем със РНР скрипт за upload на файлове
« Отговор #10 -: Jan 29, 2006, 14:53 »
Реших проблема............ но направо ме е срам да кажа къде беше '<img'>
Допуснал съм "правописна" грешка при "post" и  се  е получило "pots"
Сори за изгубеното време, обещавам следващия път да ползвам поне "леко оцветен" тхт редактор вместо nano '<img'>
Активен

Йордан

  • Напреднали
  • *****
  • Публикации: 1451
  • Distribution: Ubuntu / Gentoo
  • Window Manager: Gnome
  • не е важно колко ти е голяма пишката, а какво можеш с нея
    • Профил
    • WWW
Проблем със РНР скрипт за upload на файлове
« Отговор #11 -: Jan 29, 2006, 19:15 »
mcedit  '<img'>
Активен

Всеки пост - отговор на въпрос !!!

Йордан Георгиев
http://ygeorgiev.net/

prilep

  • Напреднали
  • *****
  • Публикации: 94
    • Профил
Проблем със РНР скрипт за upload на файлове
« Отговор #12 -: Jan 29, 2006, 20:28 »
Здрасти - ето малко код:

Примерен код

<?php
/*
 * Created on Jan 29, 2006
 *
 */
error_reporting(E_ALL);
ini_set('display_errors', 1);
ini_set('log_errors', 0);

if (isset($_POST['upload'])) {
    $myvar = $HTTP_POST_FILES['attach']['tmp_name'];
    $secondvar = $HTTP_POTS_FILES['attach']['tmp_name'];
    
     printf($myvar);
}
?>
  <form method="post" enctype="multipart/form-data">
  <p>some files</p>
  <input type="file" name="attach" size="50" maxlength="100000" accept="text/*"/><br/>
  <input type="submit" name="upload" value="test"/>
  
  </form>



Виж първите три реда. Ако и при теб беше така щеше да "получиш" следното:

Примерен код

Notice: Undefined variable: HTTP_POTS_FILES in /home/web/Tools/test.php on line 12


Извода е, че като пишеш нещо, трябва да го пишеш в този "режим". Като го пуснеш да работи - само логваш евентуалните грешки и непоказваш нищо.

От друга страна и Eclipsa и ZendStudio-то имат код анализатор, който предупреждава за такива неща ..
Активен

Powered By DomashnaGROZDOVA & ShopskaSalata

  • Гост
Проблем със РНР скрипт за upload на файлове
« Отговор #13 -: Jan 29, 2006, 22:35 »
@prilep: добра идея наистина ....... поне за неща в процес на разработка. Мерси '<img'>
Активен

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
Проблем с шейп на upload-a
Хардуерни и софтуерни проблеми
vegetzo 1 2030 Последна публикация Jun 05, 2004, 14:41
от Филип Бонев
Проблем със скоростите upload/download в azureus
Настройка на програми
boriskrastev 2 2490 Последна публикация Sep 03, 2006, 15:54
от steady
Torrent upload към чужбина
Идеи и мнения
NimroD 2 2046 Последна публикация Nov 20, 2006, 16:34
от NimroD
Proftpd upload problem
Настройка на програми
Boiler 7 3094 Последна публикация Nov 23, 2007, 01:02
от alabal
Проблем с upload
Web development
console 1 2280 Последна публикация Jul 18, 2008, 15:53
от VladSun