2015-06-26 3 views
6

У меня есть форма, которую я загружаю видео и продолжительность/продолжительность видео.Как ограничить продолжительность видео с Dropzonejs?

После того, как я загрузил файл с PHP, я проверяю продолжительность видео размер файла FFMpeg.

Я вычисляю продолжительность в PHP и должен каким-то образом передавать значение продолжительности через PHP. Я думаю, что я должен добавить продолжительность в $result переменной Json.

Это мой HTML

<!DOCTYPE html> 
<html> 
    <head> 

     <script src= 
     "//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
     <script src="https://rawgit.com/enyo/dropzone/master/dist/dropzone.js"></script> 
     <link href="css/dropzone.css" rel="stylesheet"> 
     <script type="text/javascript"> 

     Dropzone.options.myDropzone = { 

     maxFiles: 1, 
     acceptedFiles: "image/*,video/*", 
     maxfilesexceeded: function (file) { 
      this.removeAllFiles(); 
      this.addFile(file); 
      $('#infomsg').hide(); 

     }, 

     init: function() { 
      $('#infomsg').hide(); 

      this.on("success", function (result) { 

       $('#infomsg').show(); 


       $("#boatAddForm").append($('<input type="hidden" ' + 
        'name="files[]" ' + 
        'value="' + result.name + '">')); 

      }); 
     } 
     }; 


     </script> 
     <title></title> 
    </head> 
    <body> 
     <p> 
      This is the most minimal example of Dropzone. The upload in this 
      example doesn't work, because there is no actual server to handle 
      the file upload. 
     </p><!-- Change /upload-target to your upload address --> 
     <form action="/dropzone/upload.php" class="dropzone" id="my-dropzone" 
     name="my-dropzone"></form> 
     <form action="/dropzone/son.php" id="boatAddForm" method="post" name= 
     "boatAddForm"> 
      <input class="submit" type="submit"> 
     </form> 
    </body> 
</html> 

Это мой PHP

<?php 
$ds   = DIRECTORY_SEPARATOR; 

$storeFolder = 'uploads'; 

if (!empty($_FILES)) { 

    $tempFile = $_FILES['file']['tmp_name']; 

    $targetPath = dirname(__FILE__) . $ds. $storeFolder . $ds; 

    $targetFile = $targetPath. $_FILES['file']['name']; 

    move_uploaded_file($tempFile,$targetFile); 

} else { 
    $result = array(); 

    $files = scandir($storeFolder);     //1 
    if (false!==$files) { 
     foreach ($files as $file) { 
      if ('.'!=$file && '..'!=$file) {  //2 
       $obj['name'] = $file; 
       $obj['size'] = filesize($storeFolder.$ds.$file); 
       $result[] = $obj; 
      } 
     } 
    } 

    header('Content-type: text/json');    //3 
    header('Content-type: application/json'); 
    echo json_encode($result); 
} 

Если бы я мог проверить ответ на заказ JSon сразу после

Dropzone.options.myDropzone = { 

, как и другие требования к успеху, я не будет иметь права, если утверждения будут успешными, чтобы проверить валидацию.

В основном я хочу сделать это, как я, как

maxFiles: 1, 

без написания каких-либо условий внутри успеха

ответ

0

Насколько я понимаю, вы хотите, чтобы получить продолжительность видео файл на клиенте -боковая сторона. Это возможно с использованием методов API HTML5. Original example here.

По умолчанию в dropzone.js нет поддержки. Вам нужно будет добавить эту функцию самостоятельно.

Вот пример кода для получения продолжительности видео при выборе видеофайла (взятый из курсовых курсов).

<form action="#" method="post" enctype="multipart/form-data"> 
    File: <input type="file" name="fup" id="fup" /><br> 
    Duration: <input type="text" name="f_du" id="f_du" size="5" /> seconds<br> 
    <input type="submit" value="Upload" /> 
</form> 
<audio id="audio"></audio> 

<script> 
// Code to get duration of audio /video file before upload - from: http://coursesweb.net/ 

//register canplaythrough event to #audio element to can get duration 
var f_duration =0; //store duration 
document.getElementById('audio').addEventListener('canplaythrough', function(e){ 
    //add duration in the input field #f_du 
    f_duration = Math.round(e.currentTarget.duration); 
    document.getElementById('f_du').value = f_duration; 
    URL.revokeObjectURL(obUrl); 
}); 

//when select a file, create an ObjectURL with the file and add it in the #audio element 
var obUrl; 
document.getElementById('fup').addEventListener('change', function(e){ 
    var file = e.currentTarget.files[0]; 
    //check file extension for audio/video type 
    if(file.name.match(/\.(avi|mp3|mp4|mpeg|ogg)$/i)){ 
    obUrl = URL.createObjectURL(file); 
    document.getElementById('audio').setAttribute('src', obUrl); 
    } 
}); 
</script> 
Смежные вопросы