【问题标题】:How to Upload Video file showing a progressbar in PHP如何在 PHP 中上传显示进度条的视频文件
【发布时间】:2023-03-30 06:50:01
【问题描述】:

我想使用 PHP 上传视频文件并通过进度条显示上传进度。但这比我想的更难,我试图把我找到的部分放在一起,但不幸的是,我没有找到一个完全包含所需 PHP、Ajax 和 HTML 代码的工作代码,所以我试过了把不同的部分放在一起。 @fahad

'''
<?php include('session.php'); ?>
<?php include 'public/menubar.php'; ?>

<script src="assets/js/ckeditor/ckeditor.js"></script>
<script src="assets/js/jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="assets/js/jquery.validate.min.js"></script>

<script type="text/javascript">

    (function($,W,D) {
        var JQUERY4U = {};
        JQUERY4U.UTIL = {
            setupFormValidation: function() {
                //form validation rules
                $("#form-validation").validate({
                    rules: {
                        cat_id              : "required",
                        video_title         : "required",
                        video_duration      : "required",
                        video_description   : "required",
                        youtube             : "required",
                        url_source          : "required",
                        video               : "required",
                        image               : "required",
                        video_thumbnail     : "required"                     
                    },

                     messages: { 
                        cat_id              : "Please fill out this field!",
                        video_title         : "Please fill out this field!",
                        video_duration      : "Please fill out this field!",
                        video_description   : "Please fill out this field!",
                        youtube             : "Please fill out this field!",
                        url_source          : "Please fill out this field!",
                        video               : "Please fill out this field!",
                        image               : "Please fill out this field!",
                        video_thumbnail     : "Please fill out this field!"

                    },
                    errorElement : 'div',
                    submitHandler: function(form) {
                        form.submit();
                    }

                });
            }
        }

        //when the dom has loaded setup form validation rules
        $(D).ready(function($) {
            JQUERY4U.UTIL.setupFormValidation();
        });

    })(jQuery, window, document);

</script>

<?php include 'public/add-video-form.php'; ?>
<?php include('public/footer.php'); ?>

'''

【问题讨论】:

  • 如果要显示进度条,则必须使用 AJAX 上传文件。

标签: javascript php ajax html file-upload


【解决方案1】:

上传表单是表单的名称.. ("progressBar") 是你的进度条 使用它,如果您有任何问题,请告诉我

function _(el) {
    return document.getElementById(el);
}

$('#uploadForm').submit((event) => {
    event.preventDefault()
    var form = document.getElementById("uploadForm"),
        formdata = new FormData(form);
    var ajax = new XMLHttpRequest();
    ajax.upload.addEventListener("progress", progressHandler, false);
    ajax.addEventListener("load", completeHandler, false);
    ajax.addEventListener("error", errorHandler, false);
    ajax.addEventListener("abort", abortHandler, false);
    ajax.open("POST", "upload-media");
    ajax.send(formdata);

    function formatBytes(bytes, decimals) {
        if (bytes == 0) return '0 Bytes';
        var k = 1024,
            dm = decimals <= 0 ? 0 : decimals || 2,
            sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],
            i = Math.floor(Math.log(bytes) / Math.log(k));
        return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];
    }

    function progressHandler(event) {
        _("loaded_n_total").innerHTML = `Uploaded ${formatBytes(event.loaded)} of ${formatBytes(event.total)}`;
        var percent = event.loaded / event.total * 100;
        _("progressBar").style.width = `${Math.round(percent)}%`;
        _("status").innerHTML = `${Math.round(percent)}% uploaded... please wait`;
        _('submit').setAttribute('disabled', 'disabled');

    }

    function completeHandler(event) {
        var res = JSON.parse(event.target.response);
        _("titleView").innerHTML = `${res.title}`;
        _('total').innerHTML = `${formatBytes(res.fileSize)}`;
        _("statuses").innerHTML = `video Uploaded successfully`;
        _("status").innerHTML = `video Uploaded successfully file name is ${res.video}`;
        _("imgplace").innerHTML = `<img src="thumbnail/${res.thumbnail}">`;
        _("progressBar").style.width = "0";
        _("uploadForm").reset();
        _("submit").removeAttribute('disabled', 'disabled');

    }

    function errorHandler(event) {
        _("status").innerHTML = "Upload Failed";
    }

    function abortHandler(event) {
        _("status").innerHTML = "Upload Aborted";
    }
})

【讨论】:

  • 你能把你的电子邮件发给我吗?我想谈谈 - 在 lastnode43@gmail.com 上查看我
  • 立即查看@Nasirudeen Olohundare 我的电子邮件:lastnode43@gmail.com
  • 现在查看我的电子邮件:lastnode43@gmail.com
【解决方案2】:

你可以用 Javascript 监听 ajax 的进度事件

这是之前解决的问题之一:How to show progress bar while loading, using ajax

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-26
    • 1970-01-01
    • 1970-01-01
    • 2011-07-01
    • 2011-03-10
    相关资源
    最近更新 更多