Сообщает расширение файла и выдает определенное значение. (PHP/jQuery)

#php #jquery #file-upload

#php #jquery #загрузка файла

Вопрос:

У меня есть скрипт загрузки, который использует PHP (для загрузки) и jQuery для индикатора выполнения. Вот в чем проблема. Я хочу, чтобы было разрешено загружать только файлы в формате MP4. Это работает, мне просто нужна помощь, чтобы выяснить, как исправить ошибки. Смотрите, если это не mp4, он должен отображать эхо Only MP4s are allowed at the time. в другом месте, он переместит загруженный файл в папку users, затем отобразит эхо Done. Want to see it on <a href=channelname>your channel?</a> . Вот в чем проблема. Это не приведет к повторению ошибок. Он просто говорит «Готово». всякий раз, когда загрузка файла завершена. Я был бы очень признателен за помощь в том, как я могу это исправить.

Вот мой код.

 if ($_SERVER["REQUEST_METHOD"] == "POST" amp;amp; !empty($_FILES["userfile"])) {
    $file_type = $_FILES['userfile']['type']; //returns the mimetype

   $allowed = array("video/mp4");
   if(!in_array($file_type, $allowed)) {
     echo "Only MP4 videos are allowed to be uploaded because of security, and this is still a beta.";
     echo "<button onclick='window.location.reload()'>Upload a different file</button>";
     echo "<script>removeDummy()</script>";
   } else {
      if (!file_exists($dir)) {
         mkdir($dir, 0777, true);
      }

      move_uploaded_file($_FILES['userfile']['tmp_name'],"videos/".$user."/".$_FILES['userfile']['name']);

      echo "Done. Want to see it on <a href='channelname'>your channel</a>?";
    }
}
  

и вот jQuery и JS

 function toggleBarVisibility() {
    var e = document.getElementById("bar_blank");
    e.style.display = (e.style.display == "block") ? "none" : "block";
}

function createRequestObject() {
    var http;
    if (navigator.appName == "Microsoft Internet Explorer") {
        http = new ActiveXObject("Microsoft.XMLHTTP");
    }
    else {
        http = new XMLHttpRequest();
    }
    return http;
}

function sendRequest() {
    var http = createRequestObject();
    http.open("GET", "progress.php");
    http.onreadystatechange = function () { handleResponse(http); };
    http.send(null);
}

function handleResponse(http) {
    var response;
    if (http.readyState == 4) {
        response = http.responseText;
        document.getElementById("bar_color").style.width = response   "%";
        document.getElementById("status").innerHTML = response   "%";

        if (response < 100) {
            setTimeout("sendRequest()", 1000);
        }
        else {
            toggleBarVisibility();
            document.getElementById("status").innerHTML = "Done.";
        }
    }
}

function startUpload() {
    toggleBarVisibility();
    setTimeout("sendRequest()", 1000);
}

(function () {
    document.getElementById("myForm").onsubmit = startUpload;
})();
  

Когда это будет сделано, он скажет «Готово». как в jQuery. Я хочу, чтобы это отображалось так, как это делает PHP, а не из jQuery.

Комментарии:

1. Поместите response в innerHTML .

2. когда я это делаю, и это выполняется, он говорит «100».

3. Вы отправляете GET запрос, но PHP проверяет, работает ли метод запроса POST , поэтому код не выполняется.

4. PHP-код также ожидает загрузки файла, но вы отправляете файл не на JavaScript.

5. Похоже, что PHP-код не предназначен для этого AJAX-запроса.