Перетащите Google Chrome на рабочий стол: пользовательские имена файлов - PullRequest
3 голосов
/ 18 января 2011

Используя эту разметку и скрипт, я могу создать ссылки «перетащить файл на рабочий стол» для Google Chrome 8.0.552.237 OSX (ууу!).Моя проблема заключается в том, что я не могу указать имя динамически создаваемого файла сценария - Google Chrome ВСЕГДА называет его «download.js», хотя я и указал, что он должен называться «customFileName.js».

Может кто-нибудь датьмне какое-то руководство?Это ошибка или я что-то не так делаю?Я знаю, что динамическое создание бинарных файлов в браузере, вероятно, является неправильной стороной передового края, и я должен быть счастлив, что это работает вообще, но возможность присвоить имена файлам будет очень полезна для конкретного приложения, которое я 'м здание.Исходный код прокомментирован - спасибо заранее:)

<!DOCTYPE html>
<html>
    <head></head>
    <body>
        <script>

            var mimeType= 'text/javascript'
            ,   javaScript= 'alert("hello");'
                // convert javascript to binary string
            ,   binaryText= btoa(javaScript)
                // create data uri
            ,   dataUri= "data:text/javascript;charset=utf-8;base64," + binaryText
                // a conventional http url pointing to an image
            ,   resourceUri= 'http://www.chromium.org/_/rsrc/1220198801738/'
                           + 'config/app/images/customLogo/customLogo.gif?revision=2'

                // drag this link to your desktop or other folder and 
                // Google Chrome will download a file to that location 
                // called "download.js" - it should be called "customFileName.js"
            ,   draggableScriptAnchor= document.createElement('a')

                // drag this link to your desktop or other folder and 
                // Google Chrome will download a file to that location 
                // called "customFileName.gif" as expected
            ,   draggableResourceAnchor=document.createElement('a')

            // setup drag to desktop

            // set this anchors href to the data uri
            draggableScriptAnchor.href= dataUri;
            draggableScriptAnchor.innerText= 'Drag dynamic script';
            // listen for drag events
            draggableScriptAnchor.addEventListener
            (
                'dragstart'

            ,   function (mouseEvent)
                {
                    mouseEvent.dataTransfer.setData
                    (
                        "DownloadURL"
                        // note that the convention for this string is
                        // mimetype:filename:url and that the "file"
                        // is given the name "customFileName.js"
                    ,   "text/javascript:customFileName.js:" + dataUri
                    )
                }

            ,   false    
            );

            // set this anchors href to a conventional http url
            draggableResourceAnchor.href= resourceUri
            draggableResourceAnchor.innerText= "Drag image";

            // listen for drag events
            draggableResourceAnchor.addEventListener
            (
                'dragstart'

            ,   function (mouseEvent)
                {
                    mouseEvent.dataTransfer.setData
                    (
                        "DownloadURL"
                        // as above, except that this time the mimetype
                        // is image/gif and the file name is customFileName.gif
                        // THIS WORKS AS EXPECTED
                    ,   "image/gif:customFileName.gif:" + resourceUri
                    )
                }
            )

            // add elements to the DOM
            document.body.appendChild(draggableScriptAnchor);
            document.body.appendChild(document.createElement('br'));
            document.body.appendChild(draggableResourceAnchor);
        </script>
    </body>
</html>

Ответы [ 2 ]

2 голосов
/ 23 июля 2011

Кажется, это ошибка в Chrome.Проблема « Перетаскивание типа« DownloadURL »игнорирует указанное имя файла для URL-адресов данных » была недавно исправлена, вероятно, должна быть исправлена ​​в Chrome версии 13.

Если кто-то хочет проверить,проверьте это живой пример .

0 голосов
/ 07 июля 2011

Когда я запускаю код на WIN 7, тогда я называю файл «download» без расширения .js. Когда я запускаю его в Win 2008, я получаю точное имя файла - customFileName.js

...