X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> save canvas
Letmetouchyou
Letmetouchyou
Topic Starter сообщение 17.3.2010, 15:45; Ответить: Letmetouchyou
Сообщение #1


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


Молю вас о помощи, или хотя бы куда копать.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Letmetouchyou
Letmetouchyou
Topic Starter сообщение 17.3.2010, 16:32; Ответить: Letmetouchyou
Сообщение #2


решислоь.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Roboteck
Roboteck
сообщение 12.12.2010, 14:22; Ответить: Roboteck
Сообщение #3


А как решилось?

мне нужно сохранить изображение на сервер, получаю строку в base64, отправляю на сервер, а на сервере не понимаю, что с ней делать, напиши, пожалуйста, как ты это сделал?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Letmetouchyou
Letmetouchyou
Topic Starter сообщение 12.12.2010, 15:38; Ответить: Letmetouchyou
Сообщение #4


postom отправляй строку на сервер, и далее

[PHP]$pic = explode(',',$_POST['pic']);
$pic = str_replace(' ','+',$pic[1]);
$picd = base64_decode($pic);

$name = 'image_name';


$file = fopen('userpic/'.$name.'.png',w);

fwrite($file,$picd);

fclose($file);[/PHP]

делал давно достаточно, это выдрал прям из исходника

все ето работает тут

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Добавить к коду кнопки функцию Canvas
0 Anshag 5065 25.11.2015, 12:41
автор: -Anshag-


 



RSS Текстовая версия Сейчас: 20.4.2024, 2:44
Дизайн