Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > не закачиваются некоторые файлы


Автор: supercelt 28.5.2009, 17:18
Добрый день!. Проблема в следующем. 
Делаю на сайте форму дял загрузки файлов. И осуществляю загрузку аяксом, через плагин jquery - jqueryfileupload. Наткнулся на том, что некторые файлы не закачивает, например файл мп3. В .htaccess я добавил AddType audio/mpeg .mp3. И ничего. Вот обработчик-

Код

<?PHP
$error = '';
$msg = '';
sleep(3);
if(!empty($_FILES['upload_file']['tmp_name']))
{
$file_name = $_FILES['upload_file']['name'];
$file_tmp_name = $_FILES['upload_file']['tmp_name'];
$file_size = $_FILES['upload_file']['size'];
$file_type = $_FILES['upload_file']['type'];

$msg.= $file_name.'-'.$file_tmp_name.'-'.$file_size.'-'.$file_type;
/*
$expl = explode('.', $file_name);
$ext = $expl[1];
  if($ext == 'jpg')
  {
  $error = 'no allow';
  }
  else
  {
  $msg = 'yes';
  }
*/



echo '{error: \'' . $error . '\', mess: \'' . $msg . '\'}';
}
else
{
$error = 'Error! upload failed!';
echo '{error: \'' . $error . '\', mess: \'' . $msg . '\'}';
}
?>


А вот на всякий случай функция, которая отправляет в аякс

Код

function ajaxFileUpload()
    {
        $("#progress_upload")
        .ajaxStart(function(){
            $(this).show();
        })
        .ajaxComplete(function(){
            $(this).hide();
        });
        
        $("#upload_file_button").ajaxStart(function(){
        $(this).hide();
        }).ajaxComplete(function(){
        $(this).show();
        });

        $.ajaxFileUpload({
                url:'s01_admin_handlers_ajax/upload_file.php',
                secureuri:false,
                fileElementId:'upload_file',
                dataType: 'json',
                success: function (data, status)
                {
                        if(data.error != '')
                        {
                            //alert(data.error);
                            $("#output_upload").empty().show().append(data.error);
                        }
                        else
                        {
                            //alert(data.mess);
                            $("#output_upload").empty().show().append(data.mess);
                        }
                    
                },
                error: function (data, status, e)
                {
                    alert(e);
                }
        })
        
        return false;
    }


Самое главное, что когда качаешь допустим архив, то всё нормально, и даже файл *.m3u - тоже прокатывает, а mp3 не хочет. Когда всё доходит до пхп файла, то условие if(!empty($_FILES['upload_file']['tmp_name'])) не выполняется, то есть он считает, что мп3 пришедший файл пустой что ли...

Автор: youri 28.5.2009, 17:26
var_dump($_FILES['upload_file']);

Автор: Shark 28.5.2009, 17:50
а может у тебя мп3-шка много весит???

Автор: Nigel 28.5.2009, 18:27
А где вы тут увидели закачку файлов?
И что за
Код

$expl = explode('.', $file_name);


Автор: supercelt 28.5.2009, 18:29
Nigel, Ну имелась ввиду закачка, то есть после проверки существования тмп файла и так ясно, что раз он есть, то закачка скорее всего пройдёт. Проблему решил!. У кого будет такая же ситуация, просто в .htaccess надо добавить полный список:

AddType audio/mpeg .mp3
AddType audio/mp3 .mp3 
AddType audio/mpeg .mp3
AddType audio/mpeg3 .mp3 
AddType audio/mpg .mp3 
AddType audio/x-mpeg .mp3 
AddType audio/x-mpeg-3 .mp3

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)