Сообщаем расширение файла и повторяем определенное значение.(РНР / JQuery) - PullRequest
0 голосов
/ 07 апреля 2019

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

Вот мой код.

if ($_SERVER["REQUEST_METHOD"] == "POST" && !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.

...