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ı ?
JavaScript input type="file" nesnesi hakkında yardımcı olur musunuz
5
●49
- 19-06-2021, 19:54:17Yüklenecek dosya client'da ise browser'dan güvenlik nedeni ile otomatik olarak base64 dosyasını yükleyemezsiniz.ssyazilim adlı üyeden alıntı: mesajı görüntüle
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, 20:01:27cevabı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 :/Misafir adlı üyeden alıntı: mesajı görüntüle
- 19-06-2021, 22:27:22input 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:43merak 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);