на сайте есть страница, на которой с помощью 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() ) - и предать на сервер. Как ето сделать я не знаю.
Молю вас о помощи, или хотя бы куда копать.