Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.03.2019, 23:21
Новичок на форуме
Отправить личное сообщение для iesghost Посмотреть профиль Найти все сообщения от iesghost
 
Регистрация: 02.03.2019
Сообщений: 2

Передать изображение в php (не через input type="file")
Всем привет. Помогите пожалуйста, реализую загрузку картинок на отзывах, сейчас все сделал как и хотел, можно добавлять массово картинки или по одной, формируются миниатюры, после того как форма отправляется необходимо и отправить изображения для обработки и загрузки уже на стороне пхп. Проблема в том что изображения формируются не в отдельных инпутах (если делать в отдельных то загружать скопом не выйдет и надо будет каждый раз жмакать конпку "добавить ещё". Сейчас просто через $_FILES можно принять либо одно либо несколько изображений (если они были выбраны через контрл), добавления нового изображения таким образом естественно затирает предыдущие. Поэтому пока вот так сделал, но не знаю как получить файл на сервере. Eсть ли вообще такая возможность, но буду рад любой подсказке.
https://jsfiddle.net/iesGhost/z9g0mwku/
Похожая реализация есть на одном сайте но не буду давать ссылку дабы не рекламировать.
Ответить с цитированием
  #2 (permalink)  
Старый 03.03.2019, 06:11
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Что-то понятно, что ничего не понятно. Поле выбора

<input type="file" id="upload_file" name="upload_file[]" onchange="preview_image();" multiple/>

В чем проблема выбора от одного до? Почему сервер что-то должен затереть?
Ответить с цитированием
  #3 (permalink)  
Старый 03.03.2019, 06:59
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

//Чтобы проверить, загружает ли пользователь какой-либо файл
if (FileUploadPath == '')


Если пользователь не выберет файла и закроет диалог выбора, то значение поля не изменится, а значит и не произойдет события onchange. Смысла проверять на пустоту нет, а если считаете, что будет "побочная" загрузка, ну так ее вообще осуществят без вашего скрипта.

Полю типа file можно задать допустимые типы файлов и диалог будет отображать только их. Правда не все браузеры хорошо это поддерживают, есть и косяки, но проверять лучше именно по заданным типам. Итого (как пример):

<html>
<body>
<style>
.upload_preview img{
  width: 80px;
  height: auto;
  margin-right: 10px;
  display: inline-block;
}
</style>
<input type="file" id="upload_file" name="upload_file[]" multiple="" accept="image/jpeg,image/png,image/gif"/>
<div id="image_preview" class="upload_preview"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
    $('#upload_file').change(function() {
        var f = this.files, i, r = new RegExp(this.accept.replace(/,/g,'|')), b = $('#image_preview');
        for(i=0; i<f.length; ++i) {
            if(r.test(f[i].type)) b.append("<img class='thumb' src='"+URL.createObjectURL(f[i])+"'>");
        }
    });
});
</script>
</body>
</html>

Последний раз редактировалось laimas, 03.03.2019 в 07:25.
Ответить с цитированием
  #4 (permalink)  
Старый 03.03.2019, 11:03
Новичок на форуме
Отправить личное сообщение для iesghost Посмотреть профиль Найти все сообщения от iesghost
 
Регистрация: 02.03.2019
Сообщений: 2

Сообщение от laimas Посмотреть сообщение
Что-то понятно, что ничего не понятно. Поле выбора

<input type="file" id="upload_file" name="upload_file[]" onchange="preview_image();" multiple/>

В чем проблема выбора от одного до? Почему сервер что-то должен затереть?
Спасибо что откликнулись
Вы меня не правильно поняли, затрет (заменит) не сервер, а сама кнопка (input), если мы добавим например 1 изображение то его миниатюра появится и оно нормально отправиться, но если мы нажмем по этой же кнопке и добавим еще 1 изображение то миниатюры станет 2, а вот в содержимом input будет только 1 изображение, которое было загружено последним + я хочу сделать что бы можна было удалить если не то выбрал. Похожая реализация в интернет-магазине "розетка" на отзывах.
Ответить с цитированием
  #5 (permalink)  
Старый 03.03.2019, 11:23
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

В таком случае multiple оправдано будет только в том случае, если можно выбирать по несколько изображений в разных каталогах. Но в лбом случае, одним полем выбора файла не получится, если хотите чтобы было и "еще добавить", значит добавляйте в форму еще поле выбора. Если только не хранить выбранное, используя одно поле.

Последний раз редактировалось laimas, 03.03.2019 в 11:26.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как избежать ошибки по ограничению открытых файлов? Tipylja Node.JS 3 17.08.2018 19:43
JS&PHP: можно ли передать значение переменной через XMLHttpRequest? -_Gleb_- AJAX и COMET 1 14.07.2016 08:45
Как из php файла передать данные в переменную javascript angelzzz Общие вопросы Javascript 36 01.07.2016 15:54
как зобрать контент из файла? input type="file". ntro123 AJAX и COMET 3 30.12.2010 23:01
Как добавить элемент в XML через DOM используя PHP? bayah Серверные языки и технологии 6 11.08.2010 13:33