forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   JavaScript / HTML (http://forum.boolean.name/forumdisplay.php?f=136)
-   -   скачать файл в js и преобразовать в base64 (http://forum.boolean.name/showthread.php?t=19638)

moka 16.01.2015 15:21

Ответ: скачать файл в js и преобразовать в base64
 
Цитата:

Сообщение от pax (Сообщение 291883)
Мне бы хотя бы узнать, что эта ошибка произошла. И вернуть результат, что не получилось скачать...

Если в броузере происходит, и грузишь картинку Image объектом, то не выйдет. Броузер не сообщим об этом.
А если используешь Ajax, то будет сообщена ошибка как event.

pax 16.01.2015 15:25

Ответ: скачать файл в js и преобразовать в base64
 
Удалось поймать ошибку
PHP код:

function downloadImage(urlcallback){
    
console.log("downloading image: "url);
    var 
image = new Image();
    
image.crossOrigin "Anonymous";
    
image.onload = function() {
        var 
canvas document.createElement('canvas');
        var 
ctx canvas.getContext('2d');
        
canvas.width image.naturalWidth;
        
canvas.height image.naturalHeight;
        
ctx.drawImage(image00);
        try{
            var 
pngBlob canvas.toDataURL();
        } catch(
e){
            
callback("");
        }
        
callback(pngBlob);
    };
    if(
image.addEventListener) {
        
image.addEventListener('error', function (e) {
            
e.preventDefault(); // Prevent error from getting thrown
            
callback("");
        });
    } else {
        
// Old IE uses .attachEvent instead
        
image.attachEvent('onerror', function (e) {
            
callback("");
            return 
false// Prevent propagation
        
});
    }
    
image.src url;



moka 16.01.2015 15:46

Ответ: скачать файл в js и преобразовать в base64
 
Цитата:

Сообщение от pax (Сообщение 291885)
Удалось поймать ошибку
PHP код:

function downloadImage(urlcallback){
    
console.log("downloading image: "url);
    var 
image = new Image();
    
image.crossOrigin "Anonymous";
    
image.onload = function() {
        var 
canvas document.createElement('canvas');
        var 
ctx canvas.getContext('2d');
        
canvas.width image.naturalWidth;
        
canvas.height image.naturalHeight;
        
ctx.drawImage(image00);
        try{
            var 
pngBlob canvas.toDataURL();
        } catch(
e){
            
callback("");
        }
        
callback(pngBlob);
    };
    if(
image.addEventListener) {
        
image.addEventListener('error', function (e) {
            
e.preventDefault(); // Prevent error from getting thrown
            
callback("");
        });
    } else {
        
// Old IE uses .attachEvent instead
        
image.attachEvent('onerror', function (e) {
            
callback("");
            return 
false// Prevent propagation
        
});
    }
    
image.src url;



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

pax 16.01.2015 16:07

Ответ: скачать файл в js и преобразовать в base64
 
Ради чего все затевалось:

moka 16.01.2015 19:03

Ответ: скачать файл в js и преобразовать в base64
 
А если спрятать нафиг все кроме драндулета в хорошем окружении, то все равно будет запрещать рендерить, имхо, если драндулет шаришь, то лучше иметь красивое окружение драндулета, а не просто скрин, который и так может кто угодно сделать..

pax 16.01.2015 19:07

Ответ: скачать файл в js и преобразовать в base64
 
Это само собой, со временем сделаем нормальное окно с вводом текста при посте на стену пользователя. Сейчас главное есть возможность читать данные с экрана и рендертекстур.


Часовой пояс GMT +4, время: 09:21.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot