简体   繁体   English

在服务器上上传多个大型视频

[英]uploading multiple large size video on server

I have tried the following code for the large size video upload. 对于大型视频上传,我尝试了以下代码。 it uploads only one file at a time only but I want to upload multiple files at a time, what should i do? 它一次只能上传一个文件,但是我想一次上传多个文件,我该怎么办?

<?php
$target_path = "C:/xampp/htdocs/uploadVideo/uploadedFile/";
$tmp_name = $_FILES['fileToUpload']['tmp_name'];
$size = $_FILES['fileToUpload']['size'];
$name = $_FILES['fileToUpload']['name'];
$name2 = $_GET['filename'];
$target_file = $target_path.$name;
$complete =$target_path.$name2;
$com = fopen($complete, "ab");
error_log($target_path);
    $in = fopen($tmp_name, "rb");
        if ( $in ) {
            while ( $buff = fread( $in, 1048576 ) ) {
                fwrite($com, $buff);
            }   
        }
        fclose($in);
    fclose($com);
?>

and javascript code is here: 和javascript代码在这里:

<script type="text/javascript" > 
function uploadchange() {
            var input = document.getElementById("file");
            var ul = document.getElementById("uploadlist");
            while (ul.hasChildNodes()) {
                ul.removeChild(ul.firstChild);
            }
            for (var i = 0; i < input.files.length; i++) {
                var li = document.createElement("li");
                thefilesize = input.files[i].fileSize||input.files[i].size;
                if (thefilesize > 1024 * 1024){
                             thefilesize = (Math.round(thefilesize  * 100 / (1024 * 1024)) / 100).toString() + 'MB';
                         }else{
                                thefilesize = (Math.round(thefilesize  * 100 / 1024) / 100).toString() + 'KB';
                }

                li.innerHTML = input.files[i].name + " " + thefilesize ;
                ul.appendChild(li);             
            }
            if(!ul.hasChildNodes()) {
                var li = document.createElement("li");
                li.innerHTML = 'No Files Selected';
                ul.appendChild(li);
            }
            sendRequest();

        }

window.BlobBuilder = window.MozBlobBuilder || window.WebKitBlobBuilder || window.BlobBuilder;

            function sendRequest() {
        var blob = document.getElementById('file').files[0];
                var BYTES_PER_CHUNK = 1048576; // 1MB chunk sizes.
                var SIZE = blob.size;
                var start = 0;
                var end = BYTES_PER_CHUNK;
        window.uploadcounter=0;
        window.uploadfilearray = [];
        document.getElementById('progressNumber').innerHTML = "Upload: 0 % ";
                while( start < SIZE ) {

                    var chunk = blob.slice(start, end);
            window.uploadfilearray[window.uploadcounter]=chunk;
                        window.uploadcounter=window.uploadcounter+1;
                    start = end;
                    end = start + BYTES_PER_CHUNK;
                }
        window.uploadcounter=0;
        uploadFile(window.uploadfilearray[window.uploadcounter],document.getElementById('file').files[0].name);
            }

            function fileSelected() {
                var file = document.getElementById('fileToUpload').files[0];
                if (file) {
                    var fileSize = 0;
                    if (file.size > 1024 * 1024)
                        fileSize = (Math.round(file.size * 100 / (1024 * 1024)) / 100).toString() + 'MB';
                    else
                        fileSize = (Math.round(file.size * 100 / 1024) / 100).toString() + 'KB';

                    document.getElementById('fileName').innerHTML = 'Name: ' + file.name;
                    document.getElementById('fileSize').innerHTML = 'Size: ' + fileSize;
                    document.getElementById('fileType').innerHTML = 'Type: ' + file.type;
                }
            }

            function uploadFile(blobFile,filename) {
                var fd = new FormData();
                fd.append("fileToUpload", blobFile);

                var xhr = new XMLHttpRequest();


                xhr.addEventListener("load", uploadComplete, false);
                xhr.addEventListener("error", uploadFailed, false);
                xhr.addEventListener("abort", uploadCanceled, false);

                xhr.open("POST", "c.php?filename="+filename);

                xhr.onload = function(e) {
            window.uploadcounter=window.uploadcounter+1;
            if (window.uploadfilearray.length > window.uploadcounter ){
                uploadFile(window.uploadfilearray[window.uploadcounter],document.getElementById('file').files[0].name); 
                var percentloaded2 = parseInt((window.uploadcounter/window.uploadfilearray.length)*100);
                document.getElementById('progressNumber').innerHTML = 'Upload: '+percentloaded2+' % ';                              
            }else{
                document.getElementById('progressNumber').innerHTML = "File uploaded";
                loadXMLDoc('c.php?url='+ window.currentuploaddir);

            }
                  };

                xhr.send(fd);

            }

           function uploadComplete(evt) {
                /* This event is raised when the server send back a response */
        if (evt.target.responseText != ""){
                    alert(evt.target.responseText);
        }
            }

            function uploadFailed(evt) {
                alert("There was an error attempting to upload the file.");
            }

            function uploadCanceled(evt) {
                xhr.abort();
                xhr = null;
                //alert("The upload has been canceled by the user or the browser dropped the connection.");
            }


</script>



</head>
<body>

    <h3>Upload file here</h3>
    <br />
    <form name="form1" method="post" action="" enctype="multipart/form-data">

    <div id="progressNumber"></div>
    <input type="file"  id="file">
    <div id="uploadlist"></div>

    <input type="button" value="Upload" onClick="uploadchange();">



 </form>

what should i do for multiple file upload at a time?? 一次上传多个文件该怎么办? i want to upload large size files and also multiple file...this code work for only one file at a time..so how can upload multiple file using this code.?how can i apply for loop in this code for multiple upload? 我想上传大文件和多个文件...此代码一次仅适用于一个文件..那么如何使用此代码上传多个文件?我如何在此代码中申请循环进行多次上传?

Start changing 开始改变

<input type="file"  id="file">

to

<input type="file" name="file[]" id="file" multiple />

in your html. 在您的html中。

Then create a loop in your php for each file selected for upload by the user. 然后在您的php中为用户选择要上传的每个文件创建一个循环。

This is what I made lately for uploading multiple files at once; 这是我最近一次上传多个文件的结果。

if($_SERVER['REQUEST_METHOD'] == "POST") {

foreach ($_FILES['file']['name'] as $f => $name) {

    $allowedExts = array("pdf", "jpeg", "jpg", "png");
    $temp = explode(".", $name);
    $extension = end($temp);
    $naam = rand(1111111,9999999);
    if ($_FILES["file"]["size"][$f] < 200000000000 && in_array($extension, $allowedExts))
    {
        if ($_FILES["file"]["error"][$f] > 0)
        {
            echo "Error: " . $_FILES["file"]["error"][$f] . "<br>";
        }
        else
        {
            $filenaam = $naam . "." .$extension;
            move_uploaded_file($_FILES["file"]["tmp_name"][$f], "/your/path/goes/here/" . $filenaam);
            echo $filenaam . "<br />";
        }
    }
    else
    {
        echo "Wrong file.";
    }
}
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM