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)

pax 14.01.2015 17:19

скачать файл в js и преобразовать в base64
 
Можно ли как-то скачать файл средствами js и преобразовать его в base64? Желательно не html5 пока.

Nikich 14.01.2015 18:36

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

pax 14.01.2015 22:24

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

Nikich 15.01.2015 00:16

Ответ: скачать файл в js и преобразовать в base64
 
Почему нельзя получить урлы аватарок и передать их в юнити, который их сам загрузит?

pax 15.01.2015 00:44

Ответ: скачать файл в js и преобразовать в base64
 
Смысл в том, что у WebPlayer'a есть так называемый Security Sandbox. Загружая и отображая на экране текстуру, с не разрешенного места происходит блокировака чтения данных с экрана или рендертекстур. В результате скриншот не сделать.

http://docs.unity3d.com/Manual/SecuritySandbox.html

Цитата:

You are allowed to download images from servers that do not have a crossdomain.xml file. However, the only thing you are allowed to do with these images is use them as textures in your scene. You are not allowed to use GetPixel() on them. You are also not allowed to read back from the screen. Both attempts will result in a SecurityException being thrown:

Цитата:

SecurityException: No read access to the texture data:
at (wrapper managed-to-native) UnityEngine.Texture2D:GetPixel (int,int)


moka 15.01.2015 00:51

Ответ: скачать файл в js и преобразовать в base64
 
Если юзаешь JS, то глянь на флаг:
PHP код:

img.crossOrigin "Anonymous"

Он позволяет грузить с кросс-домена, и лезть в файл.

Если уж совсем извратиться, и есть JS, можно так загрузить файл, отрисовать в canvas2d затем получить png картинку toDataUrl и уже попробовать скушать ее.

pax 15.01.2015 00:55

Ответ: скачать файл в js и преобразовать в base64
 
А как это использовать? Создавать скрытые теги для картинок, но потом их как-то надо прочитать и передать в Unity в виде текста. А канвас не вариант, пока не хочется использовать html5. В общем забью пока на это дело.

moka 15.01.2015 01:02

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

var image = new Image();
image.onload = function() {
    
canvas.width image.naturalWidth;
    
canvas.height image.naturalHeight;
    
ctx.drawImage(image00);
    var 
pngBlob canvas.toDataUrl();
};
image.src 'http://...'


pax 15.01.2015 01:04

Ответ: скачать файл в js и преобразовать в base64
 
А как с нее данные получить после загрузки? Мне нужно текстуру в вэб плеере создать.

moka 15.01.2015 01:06

Ответ: скачать файл в js и преобразовать в base64
 
pngBlob - это блоб, на самом деле чистая png.
Можно заюзать toImageData() - даст вообще массив пикселей, делай с ними что хочешь, пакуй, шли, распаковывай.

pax 15.01.2015 01:08

Ответ: скачать файл в js и преобразовать в base64
 
ну это опять canvas и html5

moka 15.01.2015 16:31

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

pax 16.01.2015 14:03

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

Сообщение от moka (Сообщение 291791)
Если юзаешь JS, то глянь на флаг:
PHP код:

img.crossOrigin "Anonymous"

Он позволяет грузить с кросс-домена, и лезть в файл.

Если уж совсем извратиться, и есть JS, можно так загрузить файл, отрисовать в canvas2d затем получить png картинку toDataUrl и уже попробовать скушать ее.

В общем одна фигня
PHP код:

Uncaught SecurityErrorFailed to execute 'toDataURL' on 'HTMLCanvasElement'Tainted canvases may not be exported.VM812:115 image.onload 

либо с Anonymous
PHP код:

Image from origin 'http://vk.com' has been blocked from loading by Cross-Origin Resource Sharing policyNo 'Access-Control-Allow-Origin' header is present on the requested resourceOrigin 'http://steamcraft.landrays.com' is therefore not allowed access

Хотя часть аватаров загрузилось, подскажите, как обработать последнюю ошибку?

moka 16.01.2015 15:01

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

Сообщение от pax (Сообщение 291880)
либо с Anonymous
PHP код:

Image from origin 'http://vk.com' has been blocked from loading by Cross-Origin Resource Sharing policyNo 'Access-Control-Allow-Origin' header is present on the requested resourceOrigin 'http://steamcraft.landrays.com' is therefore not allowed access

Хотя часть аватаров загрузилось, подскажите, как обработать последнюю ошибку?

Последнюю уже не выйдет, т.к. это уже обычно жестко регулируется. Ты по идее можешь сделать мелкий сервис, который будет на твоем back-end'е вытягивать аватарки, т.к. с node.js с правильными header'ами будет проще, и кидать их на S3, и уже в игре грузить из S3 или другого хранилища.

pax 16.01.2015 15:17

Ответ: скачать файл в js и преобразовать в base64
 
Мне бы хотя бы узнать, что эта ошибка произошла. И вернуть результат, что не получилось скачать...


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

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