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

Форум PHP

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

 

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

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

тема: Загрузка файла на сервер.
 
 автор: Rolex   (19.05.2009 в 22:40)   письмо автору
 
 

Пробую загрузить файл на сервер - не получается, а при этом на локальной машине всё нормально работает. Вот форма:
<form name=form enctype='multipart/form-data' action=<?php echo $action; ?> method=post>
<table cellpadding="0" cellspacing="2">
<tr>
<td><p class=zag2>Дата размещения на сайте</td>
<td></td>
<td><input class=input size=70 type=text name=date value='<?php echo htmlspecialchars($fio); ?>'></td>
</tr>
<tr>
<td><p class=zag2>Автореферат</td>
<td><input type="checkbox" name="chk_filename" onclick="freeze_filename(this.form)" <?php echo htmlspecialchars($chek_filename); ?>></td>
<td><input class=input size=70 type=file name=filename></td>
</tr>
</table>
</form>

Вот обработчик:

$root= "";

if($_POST['chek_filename'] == "on")
{
if (!empty($_FILES['filename']['tmp_name']))
{
// Формируем путь к файлу
$path = "avtoref/".$_FILES["filename"]["name"];

if (move_uploaded_file($_FILES['filename']['tmp_name'],$root))
{
@unlink($_FILES['filename']['tmp_name']);
@chmod($root, 0777);
}
}
else links("Не указан файл для загрузки");
}

Вроде бы и скрипт должен быть рабочим. Что делать? Заранее благодарен.

  Ответить  
 
 автор: Николай2357   (19.05.2009 в 23:48)   письмо автору
 
   для: Rolex   (19.05.2009 в 22:40)
 

Наверное так имелось ввиду?
<?
if (move_uploaded_file($_FILES['filename']['tmp_name'],$path))

  Ответить  
 
 автор: Rolex   (20.05.2009 в 00:10)   письмо автору
 
   для: Николай2357   (19.05.2009 в 23:48)
 

Да, именно так. Описался, когда набивал текст на форум. От этого ничуть не слаще: в скрипте стоит $root="avtoref/".$_FILES["filename"]["name"];

  Ответить  
 
 автор: Николай2357   (20.05.2009 в 00:58)   письмо автору
 
   для: Rolex   (20.05.2009 в 00:10)
 

Опечатка не только там. Вот так у меня работает.

<?

$root
"";

if(!empty(
$_POST['chek_filename']))
{
    if (!empty(
$_FILES['filename']['tmp_name']))
    {
    
// Формируем путь к файлу
    
$root "avtoref/".$_FILES["filename"]["name"];

        if (
move_uploaded_file($_FILES['filename']['tmp_name'],$root))
        {
        @
unlink($_FILES['filename']['tmp_name']);
        @
chmod($root0777);
        }
    }
    else 
    {
    
links("Не указан файл для загрузки");
    }
}



Если на хостинге проблемы, нужно посмотреть права на каталог avtoref

  Ответить  
 
 автор: Rolex   (20.05.2009 в 11:15)   письмо автору
 
   для: Николай2357   (20.05.2009 в 00:58)
 

Права на папку avtoref стоят 750. Папка avtoref находится в папке WWW.

  Ответить  
 
 автор: Николай2357   (20.05.2009 в 13:40)   письмо автору
 
   для: Rolex   (20.05.2009 в 11:15)
 

Попробуйте права 777. Каталог avtoref должен находится на одном уровне со скриптом.

  Ответить  
 
 автор: Rolex   (20.05.2009 в 20:06)   письмо автору
 
   для: Николай2357   (20.05.2009 в 13:40)
 

Спасибо огромное за помощь новичку. Всё сделал, всё работает!!!

  Ответить  
 
 автор: Николай2357   (20.05.2009 в 21:48)   письмо автору
 
   для: Rolex   (20.05.2009 в 20:06)
 

Вот это уберите, не надо оно Вам:
 <?       
@unlink($_FILES['filename']['tmp_name']); 
@
chmod($root0777);

  Ответить  
 
 автор: KerBerOS   (20.05.2009 в 07:01)   письмо автору
 
   для: Rolex   (19.05.2009 в 22:40)
 


function file_get($URL){
    
    if (!isset($URL))
    return false;

    $url_parse = parse_url($URL);
    $this->SCHEMA_HTTP=$url_parse["scheme"];
    //print_r($url_parse);
    $this->HOST_HTTP=$url_parse["host"];
    
    if (isset($url_parse["port"]))
    $this->PORT_HTTP=$url_parse["port"];
    
    $this->PATH_HTTP=$url_parse["path"];
    
    if ($this->SCHEMA_HTTP==="proxy")
    $this->URL_HTTP="http://".$this->HOST_HTTP.$this->PATH_HTTP;
    else
    $this->URL_HTTP=$this->PATH_HTTP;
    
    $http_header="GET ".$this->URL_HTTP." HTTP/1.1\r\n";
    $http_header.="Host: ".$this->HOST_HTTP."\r\n";
    $http_header.="User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8\r\n";
    $http_header.="Accept: */*\r\n";
    $http_header.="Accept-Language: ru,en-us;q=0.7,en;q=0.3\r\n";
    $http_header.="Keep-Alive: 600\r\n";
    
    if ($this->SCHEMA_HTTP==="proxy")
    $http_header.="Proxy-Connection: keep-alive\r\n\r\n";
    else
    $http_header.="Connection: keep-alive\r\n\r\n";
    
    $res=false;
    $errno=false;
    $errstr=false;
    
    if ($this->SCHEMA_HTTP==="proxy")
    $res=fsockopen($this->HOST_PROXY, $this->PORT_PROXY, $errno, $errstr, 30);
    else
    $res=fsockopen($this->HOST_HTTP, $this->PORT_HTTP, $errno, $errstr, 30);
    
    if ($res==false)
    return false;
    
    $length_header=strlen($http_header);
    
    
    do {
                
            
    $length_write=fwrite($res, $http_header, $length_header);
    
    if ($length_write==false){
    fclose($res);
    return false;
    }
    
    }while($length_write!=$length_header);        
            
        
    $http_dest=false;
    $pos=false;
    $TEMP="";
    $size_byte=1;
    $flags=FALSE;
    $length_doc;
    
    preg_match_all("/[\S\s^]+\/(\S+\.(?:doc|xls))/", $this->URL_HTTP, $match);
    preg_match_all("/[\S\s^\.]+\.([\S+^\"]+)/", $this->URL_HTTP, $match);
    if ($match[1][0]=="doc")
    header("Content-type: application/msword");
    if ($match[1][0]=="xls")
    header("Content-type: application/msexel");
    
    do{
    
    
    $TEMP=fread($res, $size_byte);
    $info=stream_get_meta_data($res);
    $_timeout=$info["timed_out"];
    $http_dest.=$TEMP;
    if (strpos($http_dest, "\r\n\r\n") && $flags==FALSE)
    {
    preg_match_all("/Content-Length: (\d+)/", $http_dest, $match);
    $http_dest="";
    $flags=TRUE;
    $size_byte=$match[1][0];
    $TEMP="";
    }
    
    if ($flags==TRUE)
    echo $TEMP;
    
    
    }while (!feof($res) && !$_timeout);
    
    fclose($res);
    
    
    
    return true;
    
    }

Вот мой скрипт... таким образом я могу скачивать с определенного сайта файл..

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

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