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() ) - и предать на сервер. Как ето сделать я не знаю. Молю вас о помощи, или хотя бы куда копать. |
POST'ом все нормально должно передаваться.
|
POST`ом я передам саму base64 строку , на сервере сделать decode и сохранить? так предлагаете?
1) На пост нету ограничением по длинне передаваемых значений? 2)При передачи постом, почемуто пропадают все символы "+" :) |
Цитата:
Цитата:
Цитата:
|
спасибо, все рашилось. я такв начале делал , но что то не получилось и я подумал что не парвильно и начал все усложнять)
вот пхп скрипт котрым сохраняю $pic = explode(',',$_POST['data']); $pic = str_replace(' ','+',$pic[1]); $pic = base64_decode($pic); $file = fopen('pic.png',w); fwrite($file,$pic); Цитата:
Скажите пожалуйста, как эскейпить?) и еше вопрос: обизательно ли делать encode_URI при асинхронной передачи данных ... data: "data=" + options.data || "" .... xml.open(options.type, options.url , true); xml.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xml.send(options.data); |
Цитата:
|
По поводу имени файла, попробуйте
.replace("image/png", "image/octet-stream; filename=myimage.png") |
Цитата:
есть еше какиенибудь варианты? |
Часовой пояс GMT +3, время: 19:05. |