Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.08.2012, 20:16
Кандидат Javascript-наук
Отправить личное сообщение для Bebarr Swallow Посмотреть профиль Найти все сообщения от Bebarr Swallow
 
Регистрация: 17.03.2011
Сообщений: 113

Динамическое создание текстовых файлов
Стоит задача динамично генерировать плейлисты (текстовые файлы), с участием самого JavaScript.

Есть заготовка (первая попытка):
<a href="#" id="dlLink" download="playlist.m3u">Download playlist</a>

<script>
window.URL = window.webkitURL || window.URL;
window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder;

var bb = new BlobBuilder();
bb.append("file content");

dlLink.onmouseover = function() {
  this.href = window.URL.createObjectURL(bb.getBlob("text/plain"));
}
</script>


Хочу услышать предложения по улучшению скрипта.
Ответить с цитированием
  #2 (permalink)  
Старый 26.08.2012, 20:23
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,588

Хе-хе, пару дней назад подобную чтуку написал для ff для генерации плейлиста с ftp(чтоб напрямую через vlc слушать);
Воспользовался просто base64 и dataURL.

Минус - везде кроме хрома имя файла не задашь.
__________________
29375, 35

Последний раз редактировалось Aetae, 26.08.2012 в 20:28.
Ответить с цитированием
  #3 (permalink)  
Старый 26.08.2012, 20:41
Кандидат Javascript-наук
Отправить личное сообщение для Bebarr Swallow Посмотреть профиль Найти все сообщения от Bebarr Swallow
 
Регистрация: 17.03.2011
Сообщений: 113

Aetae, точно же! Вот я дурень, что сразу не догадался.
Ответить с цитированием
  #4 (permalink)  
Старый 26.08.2012, 21:14
Кандидат Javascript-наук
Отправить личное сообщение для Bebarr Swallow Посмотреть профиль Найти все сообщения от Bebarr Swallow
 
Регистрация: 17.03.2011
Сообщений: 113

Конечный вариант:
<a href="#" id="dlLink" download="playlist.m3u">Download playlist</a>

<script>
/**
*
*  Base64 encode / decode
*  http://www.webtoolkit.info/
*
**/
var Base64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(c){for(var a="",d,b,f,g,h,e,i=0,c=Base64._utf8_encode(c);i<c.length;)d=c.charCodeAt(i++),b=c.charCodeAt(i++),f=c.charCodeAt(i++),g=d>>2,d=(d&3)<<4|b>>4,h=(b&15)<<2|f>>6,e=f&63,isNaN(b)?h=e=64:isNaN(f)&&(e=64),a=a+this._keyStr.charAt(g)+this._keyStr.charAt(d)+this._keyStr.charAt(h)+this._keyStr.charAt(e);return a},decode:function(c){for(var a="",d,b,f,g,h,e=0,c=c.replace(/[^A-Za-z0-9\+\/\=]/g,"");e<c.length;)d=this._keyStr.indexOf(c.charAt(e++)),b=this._keyStr.indexOf(c.charAt(e++)),g=this._keyStr.indexOf(c.charAt(e++)),h=this._keyStr.indexOf(c.charAt(e++)),d=d<<2|b>>4,b=(b&15)<<4|g>>2,f=(g&3)<<6|h,a+=String.fromCharCode(d),64!=g&&(a+=String.fromCharCode(b)),64!=h&&(a+=String.fromCharCode(f));return a=Base64._utf8_decode(a)},_utf8_encode:function(c){for(var c=c.replace(/\r\n/g,"\n"),a="",d=0;d<c.length;d++){var b=c.charCodeAt(d);128>b?a+=String.fromCharCode(b):(127<b&&2048>b?a+=String.fromCharCode(b>>6|192):(a+=String.fromCharCode(b>>12|224),a+=String.fromCharCode(b>>6&63|128)),a+=String.fromCharCode(b&63|128))}return a},_utf8_decode:function(c){for(var a="",d=0,b=c1=c2=0;d<c.length;)b=c.charCodeAt(d),128>b?(a+=String.fromCharCode(b),d++):191<b&&224>b?(c2=c.charCodeAt(d+1),a+=String.fromCharCode((b&31)<<6|c2&63),d+=2):(c2=c.charCodeAt(d+1),c3=c.charCodeAt(d+2),a+=String.fromCharCode((b&15)<<12|(c2&63)<<6|c3&63),d+=3);return a}};
</script>

<script>
dlLink.href = "data:audio/x-mpegurl;base64," + Base64.encode("file content");
</script>

Последний раз редактировалось Bebarr Swallow, 26.08.2012 в 22:49.
Ответить с цитированием
  #5 (permalink)  
Старый 26.08.2012, 21:14
Кандидат Javascript-наук
Отправить личное сообщение для Bebarr Swallow Посмотреть профиль Найти все сообщения от Bebarr Swallow
 
Регистрация: 17.03.2011
Сообщений: 113

Ой.. кажется я сломал форум
Ответить с цитированием
  #6 (permalink)  
Старый 26.08.2012, 22:17
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,588

Лучше не text/plain, а mime-type плелиста, чтоб в браузерах кроме хрома не открывалось в новом окне, а предлагало скачать или открыть плеером. Например m3u - это audio/x-mpegurl.
__________________
29375, 35
Ответить с цитированием
  #7 (permalink)  
Старый 26.08.2012, 22:48
Кандидат Javascript-наук
Отправить личное сообщение для Bebarr Swallow Посмотреть профиль Найти все сообщения от Bebarr Swallow
 
Регистрация: 17.03.2011
Сообщений: 113

Сообщение от Aetae Посмотреть сообщение
Лучше не text/plain, а mime-type плелиста, чтоб в браузерах кроме хрома не открывалось в новом окне, а предлагало скачать или открыть плеером. Например m3u - это audio/x-mpegurl.
Дельный совет, спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите. Динамическое создание элементов! frundik Элементы интерфейса 2 21.06.2012 20:16
Динамическое создание списка <select> и обработка события двойного клика Kitana Элементы интерфейса 2 03.09.2011 17:23
Динамическое создание элементов DOM Crudelis Общие вопросы Javascript 7 13.11.2010 02:28
Динамическое создание панелек dagster Элементы интерфейса 2 07.08.2009 12:49
Динамическое создание script src RaiDeR Общие вопросы Javascript 11 22.04.2009 17:04