Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
86 / 86 / 30
Регистрация: 12.08.2014
Сообщений: 1,129

Отображение загружаемой, но еще не загруженной картинки профиля

30.04.2015, 15:34. Показов 2816. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток! Хочу сделать отображение загружаемой, но еще не загруженной картинки профиля.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php 
    function change_profile_image($user_id, $file_temp, $file_extn){
        $file_path = 'images/profile/'.substr(md5(time()), 0, 10) . '.' . $file_extn;
        move_uploaded_file($file_temp, $file_path);
        mysql_query("UPDATE `users` SET `profile` = '" . mysql_real_escape_string($file_path) . "' WHERE `user_id` = " . (int)$user_id);
    }
 
                            if (isset($_FILES['profile']) === true) {
                    if (empty($_FILES['profile']['name']) === true) {
                        echo "<div class='img-file-error'>Please choose a file!</div>";
                    } else {
                        $allowed = array(' jpg', 'jpeg', 'gif', 'png');
                        $file_name = $_FILES['profile']['name'];
                        $file_extn = strtolower(end(explode('.', $file_name)));
                        $file_temp = $_FILES['profile']['tmp_name'];
                        if (in_array($file_extn, $allowed) === true) {
                            change_profile_image($session_user_id, $file_temp, $file_extn);
                            echo "<meta http-equiv='refresh' content='0; url=http://www.page.com/index'/>";
                        } else {
                            echo "<div class='img-file-error'>Incorrect file type!<br>
                            Allowed types : ";
                            echo implode(', ', $allowed);
                            echo ".</div>";
                            }
                        }
                } ?>
            <div>Your profile's photo:</div>
            <?php
                if (empty($user_data['profile']) === false) {
                    echo '<img class="img-settings" width="250px" src="', $user_data['profile'], '" alt="',$user_data['first_name'],'\'s profile image">';
                }
            ?>
                <form action="" method="post" enctype="multipart/form-data">
                    <input type="file" name="profile"><br>
                    <input class='green-border' type="submit">
                </form>
            </div>
Суть в том, что в моем варианте картинка изменяется после записи ее в бд. Как сделать так, дабы после выбора было показано как она будет выглядеть, и лишь потом, просмотрев ее я мог отправить ее на сервер? Заранее спасибо!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.04.2015, 15:34
Ответы с готовыми решениями:

Запись загружаемой картинки в бд
Доброго времени суток есть бд # # Структура таблицы `users` # CREATE TABLE `users` ( `id` int(11) NOT NULL...

Размер загружаемой картинки
подскажите где можно увеличить размер загружаемой картинки в а то в админ панели нету там только размер файлов

уменьшить объем загружаемой картинки
Здравствуйте, мастера программирования. Я только начала изучать PHP(как и все когда-то) и очень надеюсь на Вашу помощь. Подскажите что мне...

17
 Аватар для terri
8 / 8 / 4
Регистрация: 12.05.2014
Сообщений: 233
30.04.2015, 16:09
Лучший ответ Сообщение было отмечено paskalnikita как решение

Решение

Если я понял задачу, то:
JS код
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 function onFileSelect(e) {
  var 
    f = e.target.files[0], // Первый выбранный файл
    reader = new FileReader,
    place = document.getElementById("previewImg") // Сюда покажем картинку
  ;
  reader.readAsDataURL(f);
  reader.onload = function(e) { // Как только картинка загрузится
    place.src = e.target.result;
  }
};
if(window.File && window.FileReader && window.FileList && window.Blob) {
  document.querySelector("input[type=file]").addEventListener("change", onFileSelect, false);
} else {
  console.warn( "Ваш браузер не поддерживает FileAPI")
};
Пример кода.
HTML5
1
2
3
4
<img id="previewImg" /><br>
  <span>Загрузка картинки</span>
    <input type="file" multiple="true"  onchange="preview(this.value)"/>
        </div>
1
86 / 86 / 30
Регистрация: 12.08.2014
Сообщений: 1,129
30.04.2015, 16:31  [ТС]
но что-то не отображается картинка после ее выбора
0
 Аватар для terri
8 / 8 / 4
Регистрация: 12.05.2014
Сообщений: 233
30.04.2015, 16:57
paskalnikita, изменили ID элемента, куда будет показана картинка? У меня это previewImg (<img id="previewImg" />)
Только что проверил на чистом html файле. Всё работает прекрасно
0
86 / 86 / 30
Регистрация: 12.08.2014
Сообщений: 1,129
30.04.2015, 17:18  [ТС]
то,что вы написали постом выше я написал на отдельной странице, после того, как выбираю картинку ничего не происходит

Добавлено через 13 минут
просто фот так у меня идет код на странице, почему не работает?
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<script>
    function onFileSelect(e) {
  var 
    f = e.target.files[0], // Первый выбранный файл
    reader = new FileReader,
    place = document.getElementById("previewImg") // Сюда покажем картинку
  ;
  reader.readAsDataURL(f);
  reader.onload = function(e) { // Как только картинка загрузится
    place.src = e.target.result;
  }
};
if(window.File && window.FileReader && window.FileList && window.Blob) {
  document.querySelector("input[type=file]").addEventListener("change", onFileSelect, false);
} else {
  console.warn( "Ваш браузер не поддерживает FileAPI")
};
</script>
<img id="previewImg" /><br>
  <span>Загрузка картинки</span>
    <input type="file" multiple="true"  onchange="preview(this.value)"/>
        </div>
Добавлено через 2 минуты
о, теперь рабоатет, подключил после инпута- заработало
0
 Аватар для terri
8 / 8 / 4
Регистрация: 12.05.2014
Сообщений: 233
30.04.2015, 17:23
paskalnikita, Да-да, забыл сказать. Я всегда пишу js в самом конце документа. Думал, что все так пишут и не сказал
0
86 / 86 / 30
Регистрация: 12.08.2014
Сообщений: 1,129
30.04.2015, 17:29  [ТС]
но вот только один момент: если файл выбираю не картинку, то хочу, дабы превью пуcтого не было, чтобы картинка просто не поменялась, понимаете? Можно ли как-то это реализоать?
0
 Аватар для terri
8 / 8 / 4
Регистрация: 12.05.2014
Сообщений: 233
30.04.2015, 18:00
paskalnikita, да, можно. Нужно проверку делать на тип файла. Или же изначально задавать тип файла, который можно выбрать(jpeg,png ect). Есть множество примеров кода, которые позволяют это делать. И на php, и на ajax
Например, можно тут посмотреть тык
пример php
Вытащить кусочки кода и будет нормально
0
86 / 86 / 30
Регистрация: 12.08.2014
Сообщений: 1,129
30.04.2015, 18:16  [ТС]
Не, в самом php у меня есть проверка на тип файла, но с js я не знаком(не учил),логично, что и с ajax тоже. Может, подбросите еще какое решение(раз там js и ajax \)?
0
 Аватар для terri
8 / 8 / 4
Регистрация: 12.05.2014
Сообщений: 233
30.04.2015, 18:36
paskalnikita, тык
Этот пример может вам 100% помочь. Тут сразу идет превьюшка + проверка на тип файла. Демо просмотрите
1
86 / 86 / 30
Регистрация: 12.08.2014
Сообщений: 1,129
30.04.2015, 18:41  [ТС]
изменил так:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    function onFileSelect(e) {
    var
        f = e.target.files[0], // Первый выбранный файл
        reader = new FileReader,
        place = document.getElementById("previewImg") // Сюда покажем картинку
    ;
    reader.readAsDataURL(f);
    reader.onload = function(e) { // Как только картинка загрузится
        place.src = e.target.result;
    }
    };
    if(window.File && window.FileReader && window.FileList && window.Blob) {
      document.querySelector("input[type=file]").addEventListener("change", onFileSelect, false);
    } else {
      console.warn( "Ваш браузер не поддерживает FileAPI");
    };
    onSubmit: function(file, ext){
if (! (ext && /^(jpg|png|jpeg|gif)$/.test(ext))){
// extension is not allowed
status.text('Поддерживаемые форматы JPG, PNG или GIF');
return false;
}
Что не так сделал? Подскажите.
0
 Аватар для terri
8 / 8 / 4
Регистрация: 12.05.2014
Сообщений: 233
30.04.2015, 18:56
paskalnikita, какие ошибки в консоли?
<script type="text/javascript" src="js/ajaxupload.3.5.js"></script> подключили?
function(file, ext) - посмотрите в примере php, что это за переменные
0
86 / 86 / 30
Регистрация: 12.08.2014
Сообщений: 1,129
30.04.2015, 18:59  [ТС]
SyntaxError: function statement requires a name settings:
ReferenceError: preview is not defined
0
 Аватар для terri
8 / 8 / 4
Регистрация: 12.05.2014
Сообщений: 233
30.04.2015, 19:02
paskalnikita, подставьте свои переменные из php кода идентично примеру.
Или же возьмите код с примера, измените классы/id на своё и будет работать
1
86 / 86 / 30
Регистрация: 12.08.2014
Сообщений: 1,129
30.04.2015, 19:10  [ТС]
блин, ну торможу там, может подбросите какое решение, с мои вариантом? Мне только нужно,чтобы отобразилась выбранная картинка,и не отобразился не подходящий файл.

Добавлено через 31 секунду
все ошибки уже на php реализованы, и их вывод на js мне не особо нужен
0
 Аватар для terri
8 / 8 / 4
Регистрация: 12.05.2014
Сообщений: 233
30.04.2015, 20:29
paskalnikita, я сам не сильно знаком с js, но мне стало интересно ибо самому пригодится. Сейчас пытаюсь всё таки решить проблему

Добавлено через 20 минут
paskalnikita, пока что сделано так, чтобы только изображения загружались
HTML5
1
<input type="file" multiple="true"  accept="image/*" onchange="preview(this.value)"/>
0
86 / 86 / 30
Регистрация: 12.08.2014
Сообщений: 1,129
30.04.2015, 20:44  [ТС]
да, вариант неплох, да вот только, в правом нижнем углу окошка при выборе файла, стоит 'изображения', кликнув по выпадающему списку, кликаю на 'все файлы' и пытаюсь загрузить не картинку. Проблема все-таки частична решена

Добавлено через 9 минут
но по сути, вопрос решен, но, есть небольшая лазейка - некрасиво будет отображаться текст, вместо картинки при выборе в профиле
0
 Аватар для terri
8 / 8 / 4
Регистрация: 12.05.2014
Сообщений: 233
30.04.2015, 21:02
Лучший ответ Сообщение было отмечено paskalnikita как решение

Решение

paskalnikita, вопрос почти решён. Пару минут. Доделаю

Добавлено через 13 минут
HTML5
1
2
 <img id="previewImg" onchange="preview(this.value)" src="http://rubisrub.ru/images/users/193.jpg" alt="your avatar" width="250" height="250" ><br>
  <input type='file' accept="image/*" id="imgInp">
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    function onFileSelect(e) {
      var 
        f = e.target.files[0]; // Первый выбранный файл
        if(f.type.match(/image.*/)){
            var reader = new FileReader;
            place = document.getElementById("previewImg") // Сюда покажем картинку
          ;
          reader.readAsDataURL(f);
          reader.onload = function(e) { // Как только картинка загрузится
            place.src = e.target.result;
          }
        }
        else {
                alert('Это не картинка');
            };
    };
    if(window.File && window.FileReader && window.FileList && window.Blob) {
      document.querySelector("input[type=file]").addEventListener("change", onFileSelect, false);
    } else {
      console.warn( "Ваш браузер не поддерживает FileAPI")
    };
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.04.2015, 21:02
Помогаю со студенческими работами здесь

Редактированиие(поворот) загружаемой картинки
Всем доброго времени суток! Подскажите пожалуйста как реализовать следующее: у меня есть форма, я загружаю картинку на сервер, она...

Генирируемый номер картинки, загружаемой на сервер
Всем доброго времени суток! Столкнулся с такой проблемой: у меня есть галерея картинок.Каждый раз, когда загружаю картинку название ее...

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

Определение имени для загружаемой на сервер картинки
Доброго времени суток! Есть небольшой сайт объявлений, на котором пользователь может подать объявление и прикрепить картинку. Картинки...

Как в dle 10.2 изменить размер загружаемой картинки?
Как в dle 10.2 изменить размер загружаемой картинки? а то больше 200 килобайт не берёт. P.S. Не пишите как изменить размер файла, потому...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru