Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Сохранить картинку в папку (нетипичная загрузка) (https://javascript.ru/forum/dom-window/19989-sokhranit-kartinku-v-papku-netipichnaya-zagruzka.html)

book-make 06.08.2011 12:00

Нетипичная загрузка (вопрос еще не решен)
 
Есть страница index.html

<html>
...
<img id="image" src="images/qwerty.jpg">
<input type="submit" value="отправить" >
...
<html>

Как сделать так, чтобы после нажатия на кнопку отправить, эта картинка сохранилась в моей папке /save/ на сервере? P.S.Прошу обратить внимание, что картинка уже находится на странице, а не загружается кнопкой upload.

devote 06.08.2011 12:12

copy( $_SERVER['DOCUMENT_ROOT']. '/images/qwerty.jpg', $_SERVER['DOCUMENT_ROOT']. '/save/qwerty.jpg' );

book-make 06.08.2011 12:43

Вообщем cделал так, но не получается сохранить в папку.

<html>
...
<form action="script.php" method="post" enctype="multipart/form-data">
<img id="image" src="images/qwerty.jpg">
<input type="submit" value="отправить" >
...
<html>

<?
copy( $_SERVER['DOCUMENT_ROOT']. '/images/qwerty.jpg', $_SERVER['DOCUMENT_ROOT']. '/save/qwerty.jpg' );
?>

devote 06.08.2011 12:56

Ну для начала нужно выяснить где именно лежит твоя картинка на хосте, так как ссылка указана релятивная в теге img то возможно рисунок лежит в какой нить подпаке, затем нужно создать на сервере в корне DOCUMENT_ROOT папку /save/

далее после в файле script.php нужно добавить код что я дал выше, и указать правильные пути. Но так же этот код нужно внести в правило, что бы он не выполнялся в тот момент когда это не нужно.

А вообще нужно нормально описывать проблему. Очень сложно понять что конкретно требуется, и каков смысл копировать файл внутри сервера.

book-make 06.08.2011 13:09

Значить все находится вот так:

/save/

/main/
{
/images/
index.php
}

script.php

- Папка /main/ содержит папку /images/ и index.php. В папке /images/ лежит картинка qwerty.jpg
- В папку /save/ загружаются картинки.
- Script.php - обработчик

На index.php (mysite.ru/main/) пользователь пишет ajaxom текст на картинку-демотиватор. Нужно сделать так, чтобы после нажатия на кнопку отправить, эта картинка сохранилась в папке /save/

devote 06.08.2011 13:24

файл index.php
<html>
 ...
 <form action="script.php" method="post" enctype="multipart/form-data">
 <img id="image" src="images/qwerty.jpg" />
 <input type="hidden" name="action" value="1" />
 <input type="submit" value="отправить" />
 </form>
 ...
<html>


файл script.php
<?php
    $root_directory = dirname( __FILE__ );

    if ( isset( $_POST['action'] ) && $_POST['action'] == 1 ) {
        copy( $root_directory.'/images/qwerty.jpg', $root_directory.'/../save/qwerty.jpg' );
    }
?>

Если я правильно понял script.php лежит там же где и index.php судя по тому что в форме указана релятивная ссылка на файл, то-есть искать в текущей директории.

book-make 06.08.2011 13:28

Script.php лежит в основной директории, но переместить не трудно)

kobezzza 06.08.2011 13:32

Мне кажется, что раздел "элементы интерфейса" никак не связан с языком PHP и данной проблемой.

book-make 06.08.2011 13:37

Все здорово, изображение сохраняется, но вот текст, написанные пользователем нет(

book-make 06.08.2011 13:37

Кто-ж знал, что для решения проблемы потребуется язык php )

devote 06.08.2011 13:38

текст написанный пользователем где? И куда вообще нужно его сохранять? Что-то я не допетриваю что конкретно требуется.

book-make 06.08.2011 13:43

На странице index.php находится картинка, на которую пользователь, через форму, пишет текст. Текст на этой картинке появляется сразу, без перезагрузки страницы. Пишется это все языком JS.

Есть кнопка отправить, после нажатия на которую, надо сохранить эту картинку (с текстом пользователя) на сервер в папку /save/

Предыдущий код прекрасно работает. Только загружает картинку без текста пользователя.

kobezzza 06.08.2011 13:44

Цитата:

Сообщение от book-make (Сообщение 118122)
Кто-ж знал, что для решения проблемы потребуется язык php )

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

book-make 06.08.2011 13:47

Цитата:

Сообщение от kobezzza (Сообщение 118129)
Вашу проблему можно решить с помощью любого серверного языка (для которых кстати есть отдельный раздел). Но по моему очевидно то, что проблема копирования файла на сервере никак не связана с интерфейсом веб-приложения.

Сори, как переместить тему?

devote 06.08.2011 13:47

Ох ничего себе, тут пятью минутами не обойдешься, нужно юзать библиотеку GD в PHP. подругому ты текст наложить на рисунок не сможешь, а то что JavaScript кладет поверх картинки текст, это все не то, он же не прорисовывает на самом изображении текст, он просто его ставит как дополнительный слой на рисунок. А все остальное нужно как я писал выше делать через GD.

book-make 06.08.2011 13:50

Но когда я сохраняю картинку с написанным текстом, правой кнопкой мышью, изображение сохраняется вместе с текстом. Получается текст уже наложен на рисунок

devote 06.08.2011 13:56

примерно так:
$src = imagecreatefromjpeg( $root_directory.'/images/qwerty.jpg' );
imagettftext( $src , 20, 0, 10, 10, imagecolorallocate( $src, 0, 0, 0 ), $root_directory.'/Arial.ttf', 'Hello World!!!');
imagejpeg( $src, $root_directory.'/../save/qwerty.jpg', 85 );
скопируй фонт файл Arial.ttf в папку где лежит script.php. Вместо Hello World!!! пиши тот текст который тебе нужен, строки разделяй символом \n . Позицианировать текст на картинке 4-й и 5-й параметр, те что стоят со значением 10, размер шрифта стоит 20

devote 06.08.2011 13:57

Цитата:

Сообщение от book-make
Но когда я сохраняю картинку с написанным текстом, правой кнопкой мышью, изображение сохраняется вместе с текстом. Получается текст уже наложен на рисунок

Это делает браузер, но при отправке формы этого он делать не будет.


Часовой пояс GMT +3, время: 18:57.