Загрузка и вставка картинок
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 - это временная папка? А копирования из временной папки в основную я чет не увидел
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']);
}
?>
выдрал из своего скрипта, под себя вы уж сами подгоняйте
14.
Василий (13.11.2011 / 14:36)
Vantuz (10 Июля 2011 / 11:36)
В ближайшее время хочу сделать возможность загружать и вставлять картинки в новости
не помешало и в постах такая функция.ну что то типо прикрепления
URL:
https://visavi.net/topics/23127