• 19-06-2021, 14:47:39
    #1
    Arkadaşlar elimde bir base64 ses dosyası var data:audio/x-mp3;base64 şeklinde işleyip kullanıyorum.

    istediğim bir input nesnesine örneğin (<input id="audio_file" type="file" />) bu base64 ses dosyasını göndermem gerekiyor. yani kullanıcı dosya seçimi yapmayacak seçim otomatik istediğim base64 den yüklenecek. base64 veriyi object file olarak dönüştürmeye çalıştım olmadı js de biraz kötüyüm yardımcı olabilecek çıkar mı ?
  • 19-06-2021, 19:54:17
    #2
    ssyazilim adlı üyeden alıntı: mesajı görüntüle
    Arkadaşlar elimde bir base64 ses dosyası var data:audio/x-mp3;base64 şeklinde işleyip kullanıyorum.

    istediğim bir input nesnesine örneğin (<input id="audio_file" type="file" />) bu base64 ses dosyasını göndermem gerekiyor. yani kullanıcı dosya seçimi yapmayacak seçim otomatik istediğim base64 den yüklenecek. base64 veriyi object file olarak dönüştürmeye çalıştım olmadı js de biraz kötüyüm yardımcı olabilecek çıkar mı ?
    Yüklenecek dosya client'da ise browser'dan güvenlik nedeni ile otomatik olarak base64 dosyasını yükleyemezsiniz.

    Kullanıcı seçimi yapması gerekli. Seçimi kolaylaştırmak için input göründüğünde otomatik tıklama ayarlayabilirsiniz javascript ile.

    Seneler önce yasaklandı hiç bir browser buna izin vermiyor. Eskiden c:/sifrelerim/sifrelerim.pwd gibi bir şey yapıldığı için.
  • 19-06-2021, 19:56:08
    #3
    input style="display:none;" ekleyin
  • 19-06-2021, 20:01:27
    #4
    Misafir adlı üyeden alıntı: mesajı görüntüle
    Yüklenecek dosya client'da ise browser'dan güvenlik nedeni ile otomatik olarak base64 dosyasını yükleyemezsiniz.

    Kullanıcı seçimi yapması gerekli. Seçimi kolaylaştırmak için input göründüğünde otomatik tıklama ayarlayabilirsiniz javascript ile.

    Seneler önce yasaklandı hiç bir browser buna izin vermiyor. Eskiden c:/sifrelerim/sifrelerim.pwd gibi bir şey yapıldığı için.
    cevabınız için teşekkür ederim yüklenecek dosya client te değil. serverda bulunan bir ses dosyasını file tipli bir inputa yüklemem gerekiyor hepsi bu. yani kullanıcının clientinden alınacak herhangi bir dosya yok güvenlik tehdidi de yok. bunu neden yapmak istiyorum çünkü elimde bir script var ve script dosya seçimiyle başlıyor ve sayfalarca kod yazılmış. inputu devre dışı bıraktığımda kodlar üzerinde günlerce düzenleme gerekli gibi görünüyor. kullanıcıya al sen şunu bizden indir sonra buraya yükle demek te aşırı saçma geliyor. o yüzden çıkmaza girdik :/
  • 19-06-2021, 22:27:22
    #5
    input file'da value özelliği yok o yüzden set edemezsiniz.

    Fakat input file'ın id'sini name'ini bir textarea'ya verip deneyin.

    Aşağıdaki gibi bir kod ile serverda bulunan ses dosyasını base64 olarak textarea içerisine aktarabilirsiniz. Yalnız direkt mp3 olurmu bilmiyorum bir backend script ile mp3'ü utf-8 olarak okumak gerekebilir.


    <textarea id='audio_file'></textarea>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
    
    <script>
    $( document ).ready(function() {
    
    let mp3=""
    
    $.ajax({
    url: 'a.mp3',
    data: {rnd: Math.random()},
    success: function( data ) {
    mp3 = "data:audio/mp3;base64," + data;
    $('#audio_file').val(mp3);
    
    }
    });
    
    })
    
    
    </script>
  • 20-06-2021, 14:42:43
    #6
    merak edenler için çözüm bu şekilde halledildi teşekkürler.

    function dataURLtoFile(dataurl, filename) {
        var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],
            bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
        while(n--){
            u8arr[n] = bstr.charCodeAt(n);
        }
        return new File([u8arr], filename, {type:mime});
    }
    
    //Usage example:
    var file = dataURLtoFile('data:audio/mpeg;base64,......', 'test.mp3');
    console.log(file);