Загрузка и вставка картинок

1. Вантуз-мен (10.07.2011 / 11:36)
В ближайшее время хочу сделать возможность загружать и вставлять картинки в новости
в моем представлении, при загрузке картинки идентификатор помещать в сессию, под полем для ввода новости выводить список загруженных картинок, при нажатии картинка вставляется в поле новости, на JS
после добавления новости, картинки из временной директории попадают в upload, а не использованные остаются в temp и со временем сами удаляются
у кого есть простенькие примеры с примерным сценарием?

2. ктулху (10.07.2011 / 11:40)
1, а что конкретно интересует? JS? помоему с технической стороны всё просто, по крайней мере на PHP

3. Вантуз-мен (10.07.2011 / 12:27)
да нужен js код вставки и как сделать чтобы при нажатии загрузить добавилась картинка, а все введенные данные сохранились в полях

4. ramzes (10.07.2011 / 12:31)
http://upwap.ru/1600461

Добавлено через 01:50 сек.
                           		<ul id="files">
        <li>Прикрепленные изображения:</li>
                    </ul>
                  <div id="upload">
<img src="/image/WB/ok.png" alt="Select file" /> Выберите изображение
                </div>

                </div>
	<img src="/image/WB/ok.png" alt="Select file" /> <span id="status" >Нет загруженных файлов</span>

Добавлено через 03:23 сек.
<?php
// upload.php
if(AUT){

          if(!isset($_SESSION['upload'])){
$_SESSION['upload'] = array();
          }
$validext = array('jpeg', 'jpg', 'gif', 'png');
    if($_FILES['uploadfile']['name']!=''){
$ext = explode('.', $_FILES['uploadfile']['name']);
$ext = strtolower($ext[count($ext)-1]);
        if(in_array($ext, $validext)){
          if($_FILES['uploadfile']['size']<(6144*1024) AND $_FILES['uploadfile']['size']>=300){
                if(count($_SESSION['upload'])<=5){

$new_name = 'FX_'.time().mt_rand(111,999);

// save file on tmp dir

                    if(move_uploaded_file($_FILES['uploadfile']['tmp_name'], 'tmp/files/'.$new_name)){
$_SESSION['upload'][] = array('tmp'=>$new_name, 'name'=>filter_function($_FILES['uploadfile']['name'], 60));
echo "success";
                    }else{
echo'notsave';
                    }
                  }else{
echo'limit';
                  }
          }else{
echo "filesize"; 
          }
        }else{
echo "filetype"; 
        }
    }else if(isset($this->query[0])){

// delete on array

        foreach( $_SESSION['upload'] as $n=>$fl ){
              if($fl['name']==$this->query[0]){
unset($_SESSION['upload'][$n]);
              }
        }
    
    
    }else{
echo'nofile';
    }
}

?>


5. ramzes (10.07.2011 / 12:41)
Суть в том что аясом файл отправляется на аплоад.пхп, тот его проверяет и грузит, возвращает результат, который аякс же вставляет в страницу в виде js кнопки "вставить в текст" при этом сама страница естественно не обновляется, и текст из поля ввода не теряется

6. Вантуз-мен (10.07.2011 / 12:42)
4. ramzes, спасибо сейчас глянем, а почему бы не оставлять саму картинку в той же временной директории?

7. ramzes (10.07.2011 / 12:46)
потому что потом когда я при сохранении сообщения пытался их оттуда переместить куда надо, у меня они не находились.
я сам не понял почему. может что то не так сделал, а может это денвер чудил
пришлось делать промежуточное хранение

8. Вантуз-мен (10.07.2011 / 14:20)
теперь проблема с тем как подключать этот js файл, 15 лишних килобайт думаю не все захотят подгружать, если учесть что у многих с мобил работать не будет

9. JustZero (10.07.2011 / 14:21)
8. Vantuz, if ($config['theme'] == "web") {

10. ramzes (10.07.2011 / 14:25)
8. Vantuz, так новости ж только одмин создает.
у меня 250кб js на сайте и ни кто даже не заметил этого,
тем более он кешируется, да и 15кб это не серьезно
________
на андроидах и айфонах работает отлично

11. Titov (10.07.2011 / 15:05)
а простеньким бб-кодом нельзя выводить картинки в новости? Загрузть аплоадом или импортом, после чего скопировать адрес картинки в буфер, потом вставить в нужном месте новости типо [pic]адрес картинки[/pic] на выводе получить результат типо <img src="resize.php?img=адрес картинки alt="имя картинки"/> ну как то так

12. Sifon (10.07.2011 / 16:03)
4. ramzes, popup/upload - это папка, куда загружаются изображения,
uploadfile - это переменная загружаемого файла,
tmp/files - это временная папка? А копирования из временной папки в основную я чет не увидел sad

13. ramzes (10.07.2011 / 17:28)
popup/upload.php это путь к файлу upload.php
копирование на ваш вкус.
я просто пример загрузки дал
<?
                if(isset($_SESSION['upload']) AND count($_SESSION['upload'])>0){
$validext = array('jpeg', 'jpg', 'gif', 'png');
        foreach( $_SESSION['upload'] as $n=>$attache ){
              if($n<=5){
$ext = explode('.',$attache['name']);
$ext = strtolower($ext[count($ext)-1]);
                    if(in_array($ext, $validext)){
$new_name = 'FX_'.time().$n;
$_FILES['userfile']['tmp_name'] = $attache['tmp'];
copy('tmp/files/'.$attache['tmp'], 'files/'.$new_name);
unlink('tmp/files/'.$attache['tmp']);
                          if(file_exists('files/'.$new_name)){

$sql->query("INSERT INTO blogfile SET file_name = '".$attache['name']."', file_realname = '".$new_name."', file_close = '0', id_blog = '".$blog['id']."', id_cat = '".$blog['id_cat']."', file_autor = '".UID."';");

                          }else{
                    echo'no file! '.$attache['tmp'];
                          }
                    }
              }
        }
unset($_SESSION['upload']);
                }
 ?>
выдрал из своего скрипта, под себя вы уж сами подгоняйтеsmile

14. Василий (13.11.2011 / 14:36)
Vantuz (10 Июля 2011 / 11:36)
В ближайшее время хочу сделать возможность загружать и вставлять картинки в новости
не помешало и в постах такая функция.ну что то типо прикрепления

URL: https://visavi.net/topics/23127