Мультизагрузка изображений

Простой (самый простой) способ реализовать мультизагрузку картинок.

В шаблоне правим window_load_img.tpl, делаем массив img_file[] и дописываем multiple
<input type="file" name="img_file[]" id="img_file" value="" class="input-text input-width-full" multiple />


И ActionAjax.class.php, вот функция EventUploadImage() целиком
	/**
	 * Загрузка изображения
	 *
	 */
	protected function EventUploadImage() {
		/**
		 * Т.к. используется обработка отправки формы, то устанавливаем тип ответа 'jsonIframe' (тот же JSON только обернутый в textarea)
		 * Это позволяет избежать ошибок в некоторых браузерах, например, Opera
		 */
		$this->Viewer_SetResponseAjax('jsonIframe',false);
		/**
		 * Пользователь авторизован?
		 */
		if (!$this->oUserCurrent) {
			$this->Message_AddErrorSingle($this->Lang_Get('need_authorization'),$this->Lang_Get('error'));
			return;
		}
		$sFile=null;
                
                
                if (isPost('img_url') && $_REQUEST['img_url']!='' && $_REQUEST['img_url']!='http://') {
                        /**
                         * Загрузка файла по URl
                         */
                        $sFile=$this->Topic_UploadTopicImageUrl($_REQUEST['img_url'],$this->oUserCurrent);
                        switch (true) {
                                case is_string($sFile):

                                        break;

                                case ($sFile==ModuleImage::UPLOAD_IMAGE_ERROR_READ):
                                        $this->Message_AddErrorSingle($this->Lang_Get('uploadimg_url_error_read'),$this->Lang_Get('error'));
                                        return;

                                case ($sFile==ModuleImage::UPLOAD_IMAGE_ERROR_SIZE):
                                        $this->Message_AddErrorSingle($this->Lang_Get('uploadimg_url_error_size'),$this->Lang_Get('error'));
                                        return;

                                case ($sFile==ModuleImage::UPLOAD_IMAGE_ERROR_TYPE):
                                        $this->Message_AddErrorSingle($this->Lang_Get('uploadimg_url_error_type'),$this->Lang_Get('error'));
                                        return;

                                default:
                                case ($sFile==ModuleImage::UPLOAD_IMAGE_ERROR):
                                        $this->Message_AddErrorSingle($this->Lang_Get('uploadimg_url_error'),$this->Lang_Get('error'));
                                        return;
                        }

                        if ($sFile) {                        
                                $sText=$this->Image_BuildHTML($sFile, $_REQUEST);
                        }

                } else {

                        foreach ($_FILES['img_file'] as $k=>$v){
                           if(is_array($v)){
                               foreach ($v as $sk=>$sv){ 
                                        $arr[$sk][$k]=$sv;
                                }
                               }
                            }

                        $sText = "";

                        foreach ($arr as $_FILES['img_file']) {

                                /**
                                 * Был выбран файл с компьютера и он успешно зугрузился?
                                 */
                                if (is_uploaded_file($_FILES['img_file']['tmp_name'])) {

                                        if(!$sFile=$this->Topic_UploadTopicImageFile($_FILES['img_file'],$this->oUserCurrent)) {
                                                $this->Message_AddErrorSingle($this->Lang_Get('uploadimg_file_error'),$this->Lang_Get('error'));
                                                return;
                                        }
                                        /**
                                         * Если файл успешно загружен, формируем HTML вставки и возвращаем в ajax ответе
                                         */
                                        if ($sFile) {
                                                $sText.=$this->Image_BuildHTML($sFile, $_REQUEST);
                                        }

                                }	

                        } //foreach

                }

		$this->Viewer_AssignAjax('sText',$sText);		
		
	}


такие дела

Установка плагинов через Web-морду (пока в большей степени идея)

Давны-давно, еще в пору 0.4 версии был у маленький заказ сделать плагин для установки плагинов через Web-интерфейс. Прекрасно понимаю что плагином это реализовывать было полным извращением, и что такой функционал должен быть в стандартном комплекте движка, но прихоти клиентов иногда проще выполнить чем переубедить.
В общем та наработка в виде плагина так и осталась на 0.4 версии и в каталог не пошла лиш по причине незаконченности, так как я ее видел, а именно добавить управления конфигами плагинов, так же из web-морды.

и все же... как это сделать?

Хранение временных изображений в плагинах?

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

В голове только 2 варианта: папка плагина и общая папка uploads

UPD: Решено!

Решение: Хранить временные изображения в uploads, при активации плагина создавать нужную папку, при деактивации — удалять её.

Вопрос: неиспользуемые картинки остаются на сервере?

Всем привет!
Впервые разбираюсь с LiveStreet. Вроде уже все понятно, но беспокоит один вопрос, который в перспективе может привести к большой проблеме.

Загрузив несколько изображений в тестовый пост, я затем их удалил. Удалил и сам пост.
При этом файлы картинок так и остались лежать внутри /uploads/

С аватарами людей и форумов то же самое (подозреваю, единый механизм).

Вопрос: файлы картинок, которые не используются, так и остаются лежать в /uploads/ или есть какой-то механизм очистки?

По поиску на эту тему не нашел ничего.
Буду очень благодарен за ответ.

Upload картинок не работает

При редактировании текста топика жму кнопку «изображение», выбираю файл… а ответ тишина, в папке upload пусто. Права на директории upload, cache и т.д. установлены правильно. Проверял в Опере и Мозилле.
Что делать? ;)

Пути к папке UPLOADS и пути к загруженным файлам

Прошу разработчика чуть иначе трактовать путь к папке uploads (константа DIR_UPLOADS в config.php). Надо бы там полный путь задавать, а не относительно расположения корня ЛС. Тогда загружаемые файлы можно было б располагать где угодно.

Зачем это нужно: если я прикручиваю ЛС к стороннему сайту, где уже есть «специально обученная» папка для загрузки файлов, то желательно было бы туда же заливать и файлы юзеров ЛС.

Папка uploads, и баг с количеством знаков в тексте

Привет, ребята!
У меня вопрос по установке. Систему установил, коннект настроил, топики и блоги создавать можно, но полностью не работает возможность добавить картинку к тексту, или даже аватару себе. В общем, трабла с папкой uploads, видимо, хотя права на ней стоят по требованию — 777. Папка пустая.

Вот что пишет после попытки загрузить аватару:

Warning: copy(/home/spacebook/www/my_site.ru//home/spacebook/www/my_site.ru//uploads/images/1/avatar_100x100.jpg) [function.copy]: failed to open stream: No such file or directory in /home/spacebook/www/indiegame.ru/include/function.php on line 426

Помогите, пожалуйста, разобраться, в чём дело. Возможно, что-то с путями, но где и что поправить — не могу найти.

Читать дальше →

Добавление картинки в комментариях через аплоад-форму

Updated: вначале топик был вопросом, теперь небольшим хаком ;)

Добавил вот такой код в файл /templates/skin/new/actions/ActionBlog/comment.tpl

<a href="#" onclick="showImgUploadForm(); return false;" class="button"><img src="{$DIR_STATIC_SKIN}/images/panel/img.gif" width="20" height="20" title="изображение"></a>


и такой в самый верх:
<div class="login-popup" id="window_load_img">
	<div class="login-popup-top"><a href="#" class="close-block" onclick="return false;"></a></div>
	<div class="content">
		<form method="POST" action="" enctype="multipart/form-data" id="form_upload_img" >
		<h3>Вставка изображения</h3>

		<table  border="0">		
		<tr>
			<td align="right">Файл:</td>
			<td width="100%"><input type="file" name="img_file" style="width: 100%;" value=""></td>
		</tr>
		<tr>
			<td align="right">Ссылка:</td>
			<td><input type="text" name="img_url" value="http://" style="width: 100%;">

		</tr>
		<tr>
			<td align="right">Выравнивание:</td>

			<td>
				<select name="align">
					<option value="">нет</option>
					<option value="left">слева</option>

					<option value="right">справа</option>
				</select>
		</tr>
		<tr>
			<td align="right">Описание:</td>
			<td><input type="text" name="title" style="width: 100%;"></td>
		</tr>
		<tr>

			<td></td>
			<td>
				<input type="button" value="Загрузить" onclick="ajaxUploadImg(document.getElementById('form_upload_img'),'form_comment_text');">
				<input type="button" value="Отмена" onclick="hideImgUploadForm(); return false;">
			</td>
		</tr>
		</table>
		</form>
	</div>

	<div class="login-popup-bottom"></div>
</div>


Кнопка появилась, форма вызывается и даже работает)

Аплоад etc.

Помогите далёкому от программирования человеку сделать 2 вещи: возможность аплоада файлов, раз. Два — разрешить автору блога выводить сообщения сразу на первую страницу.