<input type="file" onChange="var fr = new FileReader(); fr.readAsDataURL(this.files[0]); fr.onload = function(e){ window._img.src=e.target.result; console.log(e.target.result); }" />
<img id="_img" src=""/>
вот есть скрипт который берет из фото base64 и пихает его в src как сделать что бы base64 отправлялся в переменную php код на этой же странице?
PHP и JavaScript (jQuery) вообще не имеет общего между собой, передать переменный можно только посредством AJAX.
$.ajax({
url: "",//файл который обрабатывает скрипт
type: "POST",// метод
data: {'image': imageValue }, // переменная которая передается в PHP
success: function (response) {}, // если успешно выполнено
error: function (jqXHR, textStatus, errorThrown) // если ошибка
{ console.log(textStatus); }
});
Ну а в PHP делаем так:
if (!empty($_SERVER[ 'HTTP_X_REQUESTED_WITH' ]) &&
strtolower($_SERVER[ 'HTTP_X_REQUESTED_WITH' ]) == 'xmlhttprequest')
{
if (isset($_POST[ 'image' ]))
{ //делаем то что нам нужно
//если скрипт что то возвращает, и надо выводить эту инфу,
//то делаем так echo json_encode($printThisText); }
} die(); //забыл добавить сначала. Нужно для того чтобы прекратить
//выполнение после нужных действий
UPDATE: Примерное внедрение для твоего проекта
Я сейчас напишу небольшой пример, а ты уже подстроишь под себя: К сожалению, я никогда еще не работал с base64
и с загрузкой файлов через AJAx, но принцип будет примерно одинаковый.
HTML:
Форма с инпутом:
<form method="post" action="file.php" enctype="multipart/form-data">
<input type="file" name="uploadImage" value="" />
<input type="submit" value="Загрузить изображение" name="uploadImage">
</form>
enctype="multipart/form-data"
- атрибут нужен если форма будет загружать файлы.
Атрибут input'a
- name
может для одного изображения указывается так:
name="uploadImage"
, а если ты хочешь принимать несколько изображений, тогда указываешь name="uploadImage[]"
- теперь будет принимать целый массив.
Блок где это изображение будет выводиться:
<div>
<img id="dinamycImage" src=""/>
</div>
Например, пользователь выбирает файл, нажимает кнопку "Загрузить".
Для начала, чтобы тебе получить base64
этого изображения, тебе его надо загрузить на свой сервер (если только ты не предоставляешь возможность выбора изображений этому пользователь).
Чтобы это организовать, тебе надо осуществить загрузку файлов методом AJAX, без перезагрузки страницы, здесь я тебе не особо помогу, так как пока что не разобрался до конца как загружать файлы на сервер с помощью AJAX, но в интернете полно всяких плагинов/методов/функций которые это делают.
Дальше, очень надеюсь что ты не пишешь весь код PHP и разметку HTML в одном файле. В файле, в котором находится PHP код (можешь сделать новый файл для обработки именно этого запроса) примерно будет так:
if (!empty($_SERVER[ 'HTTP_X_REQUESTED_WITH' ]) &&
strtolower($_SERVER[ 'HTTP_X_REQUESTED_WITH' ]) == 'xmlhttprequest')
{
if (isset($_POST[ 'image' ])) {
$uploadFile = $_FILES['uploadImage'];//Если ты хочешь принимать
$imageUpload = uploadImageFunction($UploadFile);
//функция загрузки изображений на сервер
//которая додэна возвращаться твой base64
echo json_encode($imageUpload);
//после того как изображение обработалось, и
//загрузилось, ты возвращаешь это всё дела в AJAX,
//та оно само примется, как результат выполнения
//выше указаной ф-ции.
}
} die();
В фуннкции uploadImageFunction($UploadFile)
в конце обработки должно быть следующее, ты должен вернуть этот шифр в AJAX:
$path = 'myfolder/myimage.png'; // путь к файлу
$type = pathinfo($path, PATHINFO_EXTENSION);
$data = file_get_contents($path);
$base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);
return $image = $base64;
Теперь на счет AJAX:
$.ajax({
url: "",//файл который обрабатывает скрипт
type: "POST",// метод
data: {'image': imageValue }, // переменная которая передается в PHP
success: function (response) {
//здесь будет функция загрузки изображений
//которая возвращает этот base64
if(response.imagePath){
$('#dinamycImage').attr('src', response.imagePath);
//и так вставляется фотография
}
}, // если успешно выполнено
error: function (jqXHR, textStatus, errorThrown) // если ошибка
{ console.log(textStatus); }
});
Работоспособность я не проверял, но примерно так это должно происходить. Без загрузки изображения на сервер, у тебя это не получится. Я бы не рекомендовал делать загрузку посредством AJAX, но если нужно только так, тогда разбирайся.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Друзья есть старый проект работающий на symfony 14
Здраствуйте, у меня есть таблица User и UserPhoneУ одного пользователя может быть несколько номером