Показать сообщение отдельно
  #1 (permalink)  
Старый 17.03.2010, 14:44
Аспирант
Отправить личное сообщение для hangover Посмотреть профиль Найти все сообщения от hangover
 
Регистрация: 08.10.2009
Сообщений: 53

canvas, сохранение
на сайте есть страница, на которой с помощью js можно рисовать.
canvas=document.createElement("canvas");
... и тд. Все прекрасно работает.
Задача следующая: сохранять изображения.
в начале сделал так:
Код:
window.open(canvas.toDataURL("image/png"),"mywindow");
все работает, открывать новое окно, в котором изображение и его можно сохранить.
но нужно сохранять изображение на сервере. Пробовал передать base64 изображения гетом, или постом на сервер, но ето не вариант , т.к. если гет - то чаще всего получается сильно большая URL и сервер не хочет ее обрабатывать. Через POST - тоже через раз передает.

потом нашел еще бибилотеку .Теперь вместо нового окна с изображением выскакивает окно с предложением сохранить изображение.
(а самом деле просто изменили заголовок , как я понял.
.replace("image/png", "image/octet-stream"). Но сохраняет файл - без расширения. ( в опере название файла - default, в фф - ****.part где **** - первые 6 символов base4 кодировки )

Подскажите как передрать файл на сервер? ( через форму, через ифрейм, с помощью асинхронного запроса - не важно. ето потом можно настроить, главное чтобы передало и сохранило )

п.с. чего так кажеться вся задача - в передаче правильных заголовков. Но изображение - в base64 - то есть если передать то ето обычная строка. если сделать base64_deconde -> то по идеи и получим изображение. Но ету строку толком и не передать , т.. ее длина может достигать до 300 000 символов. Но браузер понимает етокак изображение. (адресная строка браузра в таком случае data:image/png;base64,iVBORw0KGgoA.....(дальше base64 строка))

еше как вариант
1) (не знаю просто возможно ли это) - перехватывать событие браузера, когда он предлагает сохранить изображение - и послать его на сервер.
2) "скопилить" изображение средствами javascript ( .. = new Image() ) - и предать на сервер. Как ето сделать я не знаю.


Молю вас о помощи, или хотя бы куда копать.

Последний раз редактировалось hangover, 17.03.2010 в 14:50.
Ответить с цитированием