Проблема с загрузчиком AJAX - PullRequest
0 голосов
/ 20 февраля 2012

Я использую загрузку файла flash / ajax в php на основе этого сайта - http://blog.codeville.net/2008/11/24/jquery-ajax-uploader-plugin-with-progress-bar/

Есть небольшое несоответствие в поведении, которое я получаю.

Одним из результатов является зависание процесса на уровне 100%. (Я могу отменить и сделать другие вещи на странице, но я просто не иду дальше.)

Другое дело, что я нажал на upload_success_handler, но файл все еще не загружен на сервер. Я даже временно изменил свои разрешения на 777, чтобы исключить все это, оно все равно не загружается.

Если у кого-то есть опыт работы с подобными вещами, я хотел бы спросить, что отправляется в ajax-файл file и как он отправляется (get / post). Кроме того, что именно мне нужно сделать с файлом, вызываемым ajax, и что я должен вернуть? Должен ли я «возвращать» имя файла, просто повторяя его, или я действительно использовал бы команду «возврат», как если бы это была функция. Все, что говорится в блоге, является следующим:

Обработчик должен сохранить загруженный файл на диск, а затем вернуть уникальный токен, такой как GUID или имя файла, для идентификации файла, который вы только что загрузили.

В настоящее время то, что у меня есть для кода в этом файле, выглядит так:

<?php
ini_set('post_max_size', 510000000);
ini_set('upload_max_filesize', 500000000);
ini_set('max_input_time', 20);
ini_set('memory_limit', 520000000);

if (!empty($_FILES['file']['name'])) //checking if file upload box contains a value
{

    $saveDirectory = 'videos/';         //name of folder to upload to
    $tempName = $_FILES['file']['tmp_name'];    //getting the temp name on server
    $fileName1 = $_FILES['file']['name'];       //getting file name on users computer

    $test = array();
    $test = explode(".", $fileName1);
    if((count($test) > 2) || ($test[1] != "avi" && $test[1] != "AVI" && $test[1] != "flv" && $test[1] != "FLV" && $test[1] != "mov" && $test[1] != "MOV" && $test[1] != "mpeg" && $test[1] != "MPEG" && $test[1] != "mp4" && $test[1] != "MP4" && $test[1] != "wmv" && $test[1] != "WMV")){
        $err .= "Invalid file type.  Files must have only one period \".\" and be of type .avi .flv .mov .mpeg .mp4 or .wmv";
        echo $err;

    }else{

        $count = 1;
        do{
        $link = $saveDirectory . $count . $fileName1;
        $count++; 
        }while(is_file($link));
        if (move_uploaded_file($tempName, $link))   //Moves the temp file on server
        {                                           //to directory with real name


            echo $link;

        } 
        else 
        {
            $err .= "There was an error while uploading the file.";

            echo $err;
        }
    }
}
?>

1 Ответ

0 голосов
/ 21 февраля 2012

Я понял это. Оказывается, javascript из блога переименовывал входной файл в нечто иное, чем я дал. Как только я скорректировал свой код соответственно, он заработал. Я понял это после того, как мне было предложено вывести переменные $ _FILES []. Выходные данные моего сценария asyncupload.php были перенесены обратно в один из скрытых входных данных, сгенерированных javascript.

Я просто решил, что выложу свое решение для кого-то еще с этой проблемой.

...