2016-03-16 13 views
8

Modemden birinde, [type = 'file'] girişinden videoya göz atmam gerekiyor, bundan sonra seçili videoyu daha önce göstermem gerekiyor yükleme başlatılıyor.Video dosyasının önizlemesini nasıl ayarlayabilirim, giriş tipinden seçiyorum = 'dosya'

Göstermek için temel HTML etiketini kullanıyorum. ama bu çalışmıyor. İşte

kodudur:

$(document).on("change",".file_multi_video",function(evt){ 
 
    
 
    var this_ = $(this).parent(); 
 
    var dataid = $(this).attr('data-id'); 
 
    var files = !!this.files ? this.files : []; 
 
    if (!files.length || !window.FileReader) return; 
 
    
 
    if (/^video/.test(files[0].type)){ // only video file 
 
    var reader = new FileReader(); // instance of the FileReader 
 
    reader.readAsDataURL(files[0]); // read the local file 
 
    reader.onloadend = function(){ // set video data as background of div 
 
      
 
      var video = document.getElementById('video_here'); 
 
      video.src = this.result; 
 
     } 
 
    } 
 
    
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<video width="400" controls > 
 
       <source src="mov_bbb.mp4" id="video_here"> 
 
      Your browser does not support HTML5 video. 
 
      </video> 
 

 

 
<input type="file" name="file[]" class="file_multi_video" accept="video/*">

cevap

2

o jquery kütüphanesini kullanan unutmayın

JavaScript

$ ("#video_p").change(function() { 
    var fileInput = document.getElementById('video_p'); 
    var fileUrl = window.URL.createObjectURL(fileInput.files[0]); 
    $(".video").attr("src", fileUrl); 
}); 

Html

< video controls class="video" > 
</video> 
20

@FabianQuiroga daha iyi bu durumda bir FileReader daha createObjectURL kullanması gerektiğini haklı, ama ihtiyacınız böylece sorunun, bir <source> elemanın src set gerçeği ile ilgisi vardır videoElement.load()'u aramak için

$(document).on("change", ".file_multi_video", function(evt) { 
 
    var $source = $('#video_here'); 
 
    $source[0].src = URL.createObjectURL(this.files[0]); 
 
    $source.parent()[0].load(); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<video width="400" controls> 
 
    <source src="mov_bbb.mp4" id="video_here"> 
 
    Your browser does not support HTML5 video. 
 
</video> 
 

 
<input type="file" name="file[]" class="file_multi_video" accept="video/*">

Ps

: Artık ihtiyaç olmadığında URL.revokeObjectURL($source[0].src) aramaya unutma. Öyle angularjs yeni am

+0

kullanarak bu nasıl yapılabileceği olduğunu bilmek istiyorum! Bu arada, herhangi bir noktada URL.revokeObjectURL ($ source [0] .src) yapmamanın etkisi nedir? – CarlosArturoFyuler

+1

@CarlosArturoFyuler bu tam durumda (bir kullanıcı tarafından sağlanan dosya aracılığıyla girdi [type = file] ', çok değil ...' CreateObjectURL' tarafından döndürülen blobURI, sadece kullanıcının diskindeki dosyaya doğrudan bir bağlantı içerir. Hafıza etkisi önemli olmaktan daha azdır, ancak diğer durumlarda, gerçek sonuçları vardır: oluşturulan veya getirilen bir Blob'dan elde edilmemiş bir blobURI, oturumu sona erene kadar verilerini belleğinde tutacak ve hatta daha da kötüsü MediaTream ile, gUM gibi Bu cevap cOU yazıldığı zaman hala MediaStreams, şimdi kullanımdan kaldırıldı görüntülemek için), cihaz (örneğin web kamera) engelleyebilir. – Kaiido

+0

Açıklama için teşekkürler :) – CarlosArturoFyuler

1

$(document).on("change", ".file_multi_video", function(evt) { 
 
    var $source = $('#video_here'); 
 
    $source[0].src = URL.createObjectURL(this.files[0]); 
 
    $source.parent()[0].load(); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<video width="400" controls> 
 
    <source src="mov_bbb.mp4" id="video_here"> 
 
    Your browser does not support HTML5 video. 
 
</video> 
 

 
<input type="file" name="file[]" class="file_multi_video" accept="video/*">

Kabul cevabı olmalı angularjs

İlgili konular