Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Применение библиотек > ExtJs - saveImageAs, окошко и сохранения(е) файла?


Автор: Killer_13 14.8.2012, 16:30
Здравствуйте, есть у меня такой кусочек кода, 
Код

        me.imgDownloadButton = Ext.create('Ext.button.Button', {
            text : nls('Download'),
            handler : function() {
                var address = me.getAddress() + "&chartW=" + 100 + "&chartH=" + 100;
                var imgObj;
                $.get(address, function(data){
                    console.log("ImgObject " + data);
                    imgObj = data;
                });
            }
        });


мне нужно по клику загрузить картинку с сервера(что уже делается посредством jQuery, в extJs - силен еще меньше)
потом нужно чтоб выскочило окошко(стандартное окошко с запросом куда сохранять или что открыть) с запросом куда сохранять файл и сохранить его как картинку.
Объект "data" и есть картинка.
И еще вопрос, почему я не могу его скопировать в "imgObj"? 
спасибо.

Автор: skyboy 14.8.2012, 21:01
хм. интересная задача. а что мешает просто переходить по URL'у на эту картинку с отдачей заголовком Content-Type: application/octet-stream?
http://stackoverflow.com/questions/5648967/force-download-image

Автор: Killer_13 14.8.2012, 21:53
Цитата(skyboy @  14.8.2012,  21:01 Найти цитируемый пост)
хм. интересная задача. а что мешает просто переходить по URL'у на эту картинку с отдачей заголовком Content-Type: application/octet-stream?

Наверное ничего, я не знаю, вот и спрашиваю. 
Попробую, посмотрю что мне на это сервер скажет. на серваке сейчас стоит

Код

response.setContentType("image/png");

 - если поменяю ничего не изменится? Так как не могу сейчас попробовать, завтра смогу.
Просто интересуюсь, сейчас почитаю, что это и с чем его..

Или вот еще посоветовали...
Код

....
            handler: function(btn, e) {
                var
                    ifrm,
                    ifrmId="ifrDownload";

                if(!(ifrm=Ext.getDom(ifrmId)))
                    Ext.DomHelper.append(Ext.getBody(), {
                        tag: "iframe",
                        id: ifrmId,
                        frameBorder: 0,
                        style: "display: none; height: 1px; width: 1px; ",
                        src: "blah-blah-blah"
                    })
                else
                    ifrm.src="blah-blah-blah";
            },
....


Завтра с утреца займусь этим, посмотрю, что да и как..
Пасиб

Автор: skyboy 15.8.2012, 19:55
Цитата(Killer_13 @  14.8.2012,  20:53 Найти цитируемый пост)
Наверное ничего, я не знаю, вот и спрашиваю. 

я вижу неучтенное решение. могу предположить, что ты его не рассматривал, а могу — что рассматривал, но по неизвестным причинам отказался. я предположил второе smile
Цитата(Killer_13 @  14.8.2012,  20:53 Найти цитируемый пост)
если поменяю ничего не изменится?

изменится. перестанет браузером восприниматься как картинка и отображатся. и станет предлагаться к сохранению.

Цитата(Killer_13 @  14.8.2012,  20:53 Найти цитируемый пост)
Или вот еще посоветовали...

если ifrm.src ведет на картинку ж, то без переназначенного Content-Type у тебя будет подгружаться в iframe Картинка, которую просто не будет видно.
что, очевидно, не решение задачи smile
это способ визуально скрыть от пользователя URL картинки, только и всего

Автор: Killer_13 15.8.2012, 22:33
Решилось вот так.

Код

response.setContentType("application/octet-stream");
response.setHeader("Content-disposition", "attachment; filename=chart.jpeg");

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)