За последние 24 часа нас посетили 17989 программистов и 1649 роботов. Сейчас ищут 1672 программиста ...

Проблема с загрузкой аудио

Тема в разделе "PHP для новичков", создана пользователем Дмитрий, 13 дек 2010.

  1. Дмитрий

    Дмитрий Активный пользователь

    С нами с:
    20 май 2009
    Сообщения:
    16
    Симпатии:
    0
    Здравсвуйте! У меня возникла проблема с загрузкой аудио файлов! Написаный скрипт не загружает аудио и видео файлы... хотя изображения и другие файлы загружает замечательно!
    вот форма:
    HTML:
    1.  
    2. <FORM ENCTYPE="multipart/form-data" ACTION="upload.php" METHOD=POST>
    3. <TABLE align="center" width="100%">
    4. <TR>
    5.     <TD>Файл:</TD>
    6.     <TD><INPUT NAME="myfile" TYPE="file" style = "width:100%"></TD>
    7. </TR>
    8. <TR>
    9.     <TD>Название:</TD>
    10.     <TD><INPUT NAME="filename" TYPE="text" style = "width:100%"></TD>
    11. </TR>
    12. <TR>
    13.     <TD>Альбом:</TD>
    14.     <TD>
    15.         <select NAME="album" TYPE="select" style = "width:100%">
    16. <?php
    17. require_once("../../connect_db.php");
    18. $res = mysql_query("Select id, name From albums Order By id ASC;");
    19.  
    20. while($album = mysql_fetch_array($res))
    21. {
    22.    print "<option value = '".$album[0]."'>".urldecode($album['1'])."</option>";
    23. }
    24. ?>
    25.         </select>
    26.     </TD>
    27. </TR>
    28. <TR>
    29.     <TD colspan="2"><INPUT TYPE="submit" VALUE="Загрузить"></TD>
    30. </TR>
    31.  
    а вот и сам код загрузки:
    PHP:
    1.  
    2. <?php
    3. // проверяем заполенность формы $_FILES["myfile"] - путь к файлу, $_POST['filename'] - текст, $_POST['album'] - текст
    4. if(isset($_FILES["myfile"], $_POST['filename'], $_POST['album']))
    5. {
    6.     // получаем информацию о файле
    7.     $myfile = $_FILES["myfile"]["tmp_name"];
    8.     $myfile_name = $_FILES["myfile"]["name"];
    9.     $myfile_size = $_FILES["myfile"]["size"];
    10.     $myfile_type = $_FILES["myfile"]["type"];
    11.     $error_flag = $_FILES["myfile"]["error"];
    12.  
    13.     // если нет ошибки загружаем файл в указаную директорию
    14.     if($error_flag == 0)
    15.     {
    16.         $fp = fopen($myfile,"r");
    17.         $content = fread($fp, filesize($myfile));
    18.         fclose($fp);
    19.         move_uploaded_file($myfile,"../../data/music/$myfile_name");
    20.  
    21.     }
    22.    
    23.     // записываем информацию о файле в БД
    24.     $res = mysql_query("Select max(id) From music");
    25.     $id = mysql_fetch_array($res);
    26.     if($id[0] == NULL)
    27.     {
    28.         $id = 0;
    29.     }
    30.     else { $id = $id[0]+1; }
    31.    
    32.     $name = urlencode($_POST['filename']);
    33.     $file_name = urlencode($_FILES["myfile"]["name"]);
    34.     $album_id = $_POST["album"];
    35.     mysql_query("Insert into music values($id, '$name', '$file_name', '$album_id');") or die("Insert Error:".mysql_error());
    36.    
    37.     // освобождаем память
    38.     mysql_close($cn);  
    39.     unset($_FILES["myfile"], $myfile, $error_flag);
    40.     // переводим на другую страницу
    41.     header("location:show_music.php");
    42. }
    43. else print "ERROR";
    при попытке загрузить аудио или видео файл выдает ошибку: Notice: Undefined index: myfile in C:\wamp\www\avramets.com.ua\admin\music\upload.php on line 4

    Помогите пожалуйста справится с этой бедой!
     
  2. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    Проблема в
    будет загружено при условии если 3 файла как я понял одновременно загружатюся. мб просто записать

    соре сам новенький буду помогать чем могу)


     
  3. Дмитрий

    Дмитрий Активный пользователь

    С нами с:
    20 май 2009
    Сообщения:
    16
    Симпатии:
    0
    Дело в том, что при загрузке изображения либо друго (pdf, doc...) файла ошибки нет! и загружается все замечательно! а как только загружаю аудио-видео, сразу же выдает ошибку!

    Вот это:
    PHP:
    1. if($_FILES["myfile"] != "" && $_POST['filename'] != "" && $_POST['album'] != "")
    я поменял на это:
    PHP:
    1. isset($_FILES["myfile"], $_POST['filename'], $_POST['album'])
    ошибка пропала, но загрзку не произходит... дальше условия не идет...
     
  4. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    пропала потому что наверное надо if(isset(..)) ? 8)
     
  5. Дмитрий

    Дмитрий Активный пользователь

    С нами с:
    20 май 2009
    Сообщения:
    16
    Симпатии:
    0
    ну это понятно! оно так и есть:
    PHP:
    1.  
    2. if(isset($_FILES["myfile"], $_POST['filename'], $_POST['album']))
    3. {
    4.    ...
    5. }
    6. else print "ERROR";
    7.  
    теперь просто пишет "ERROR". все поля заполняю правильно, а вот до зугрузки не доходит...
     
  6. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    т.к я нуб задаю сразу нубо вопрос, разве можно так перечислять? && и || или сужествует вроде)


    мб
    } else { print "ERROR"; } ?) ну мб и значения не имеет) забей я тоже нуб тоже разбираюсь пока что во всем :)
     
  7. Дмитрий

    Дмитрий Активный пользователь

    С нами с:
    20 май 2009
    Сообщения:
    16
    Симпатии:
    0
    функция isset() проверяеет на существование заданные в параметрах переменные.
     
  8. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Напиши в скрипте где-нить вначале:
    PHP:
    1. <?php
    2. echo('POST: ' . ini_get('post_max_size') . ', File: ' . ini_get('upload_max_filesize');
    И сравни с размером загружаемого файла.
     
  9. Дмитрий

    Дмитрий Активный пользователь

    С нами с:
    20 май 2009
    Сообщения:
    16
    Симпатии:
    0
    выдало POST: 8M, File: 2M
    а сам файл 14mb
     
  10. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Вот то что выдало означает, что максимальный размер для POST-запроса 8 Мб, а максимальный размер загружаемого файла не должен превышать 2 Мб. Так настроен php на твоём сервере. Надо либо редактировать php.ini, либо использовать .htaccess .
    Можно попробовать воспользоваться ini_set(), но сомневаюсь, что это поможет.
     
  11. Дмитрий

    Дмитрий Активный пользователь

    С нами с:
    20 май 2009
    Сообщения:
    16
    Симпатии:
    0
    если редактировать php.ini, то где?
     
  12. Дмитрий

    Дмитрий Активный пользователь

    С нами с:
    20 май 2009
    Сообщения:
    16
    Симпатии:
    0
    сам нашел:
    ;;;;;;;;;;;;;;;;;
    ; Data Handling ;
    ;;;;;;;;;;;;;;;;;

    ; Maximum size of POST data that PHP will accept.
    ; http://php.net/post-max-size
    post_max_size = 256M


    ;;;;;;;;;;;;;;;;
    ; File Uploads ;
    ;;;;;;;;;;;;;;;;

    ; Whether to allow HTTP file uploads.
    ; http://php.net/file-uploads
    file_uploads = On

    ; Temporary directory for HTTP uploaded files (will use system default if not
    ; specified).
    ; http://php.net/upload-tmp-dir
    upload_tmp_dir = "c:/wamp/tmp"

    ; Maximum allowed size for uploaded files.
    ; http://php.net/upload-max-filesize
    upload_max_filesize = 256M
     
  13. Дмитрий

    Дмитрий Активный пользователь

    С нами с:
    20 май 2009
    Сообщения:
    16
    Симпатии:
    0
    ТЕПЕРЬ ВСЕ ЗАМЕЧАТЕЛЬНО РАБОТАЕТ!)
    ВСЕМ СПАСИБО!!!!