Есть код который фото загружает куда надо. Но вот перезаписать путь к минифото не получается. Для этого нужна переменная id !
<head>
<link href="css/default.css" rel="stylesheet" type="text/css" />
<link href="css/uploadify.css" rel="stylesheet" type="text/css" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" src="scripts/swfobject.js"></script>
<script type="text/javascript" src="scripts/jquery.uploadify.v2.1.0.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#uploadify").uploadify({
'uploader' : 'scripts/uploadify.swf', // Относительный путь к файлу uploadify.swf. По умолчанию uploadify.swf
'script' : 'scripts/uploadify.php', // Относительный путь uploadify.php. По умолчанию uploadify.php. Это скрипт - загрузчик. Обязательно посмотрите его
'cancelImg' : 'scripts/cancel.png', // Относительный путь до картинки cancel.png. По умолчанию cancel.png
'folder' : '../foto/<?php echo $id;?>', // Путь к папке, в которой Вы хотите сохранять загружаемые файлы.
//Эту настройку можно опустить, тогда папку загрузки необходимо определить в uploadify.php
//Помните! На большистве хостингов, папка, в которую Вы пытаетесь загрузить файлы должна быть доступна на запись, не забудьте выставить соответствующие права
'queueID' : 'fileQueue', // ID элемента, в котором будет показываться очередь загрузки
'queueSizeLimit' : '10', // Лимит очереди (максим. число загруж файлов). По умолчанию 999
'auto' : true, // Если истина, загрузка начнется сразу после выбора файлов
'multi' : true, // Если истина, то разрешена загрузка нескольких файлов
'fileDesc' : 'только фотографии jpg', // Текст, который будет внизу появляющегося диалогового окна. Без этого параметра будет написано "Все файлы('.')"
'fileExt' : '*.jpg; *.jpeg; *.JPG; *.JPE; *.jpe', // разрешенные к загрузке файлы (остальные вдиалолговом окне будути скрыты)
'sizeLimit' : 1500000, // Макс. Размер файла для каждой загрузки (в байтах). Если не указываем, ограничено будет только настройками Вашего сервера
'simUploadLimit' : 1, // Ограничение на кол-во одновременных закачек. По умолчанию 1. Если значение равно 1, то загружаться будет 1 файл, а остальные будут стоять за ним в очереди. Если 2 - два загружаются, остальные ждут их и т.д
'buttonText' : 'File', // Текст на кнопке. По умолчанию BROWSE. К сожалению русскийтекст не поддрживается
'buttonImg' : 'scripts/btn.png', // Путь до картинки, которая будет служить кнопкой. Компенсирует недостаток предыдущей. Если эта настройка указана, предыдущая будет проигнорирована
'width' : 255,
'height' : 87,
// 'onInit' : alert('Скрипт готов!'),// Функция, которая срабатывает, когда скрипт будет загружен. По умолчанию обработчик событий скрывает целевой элемент на странице и заменяет его с флэш-файл, затем создает очереди контейнера после него.
/*
'onSelect' : function(event, queueID, fileObj){ // Функция, которая сработает, при выборе каждого файла. Пример:
var string = 'Имя фала: ' + fileObj.name +'\n';
string += 'Размер файла: ' + fileObj.size + 'байт\n';
string += 'Тип: ' + fileObj.type + '\n';
string += 'ID в очереди: ' + queueID +'\n'; // уникальный ID файла, генерируется скриптом
alert(string)
},
'onSelectOnce' : function(event, data){ //Функция, которая вызывается один раз для каждой операции выбора.
var string = 'Файлов в очереди: ' + data.fileCount +'\n';
string += 'Было выбрано файлов: ' + data.filesSelected +'\n';
string += 'Заменено файлов в очереди: ' + data.filesReplaced +'\n';
string += 'Итоговый вес файлов в очереди: ' + data.allBytesTotal +'\n';
alert(string);
},
*/
'onProgress' : function(event, queueID, fileObj, data){ // Срабатываети каждый раз в ходе изменений во време загрузки
var string = 'Загружаем: ' + fileObj.name +'<br />';
string += 'Размер: ' + fileObj.size +'<br />';
string += 'Тип: ' + fileObj.type +'<br />';
string += 'загрузка текущего файла: ' + data.percentage +'%<br />';
string += 'загружено байт текущего файла: ' + data.bytesLoaded +'<br />';
string += 'загружено байт всей очереди: ' + data.allBytesLoaded +'<br />';
string += 'скорость загрузки, KB/s: ' + data.speed +'<br />';
$('#info,#info2').show();
$('#info').html(string);
},
'onComplete' : function(event, queueID, fileObj, response, data){ // Срабатывает когда файл загружен на сервер. По умолчанию файл удаляется из очереди, но мы можем и добваить свои какие-либо действия
var string = 'Загружен файл: ' + fileObj.name +'<br />';
string += 'Путь до файла: ' + fileObj.filePath +'<br />';
string += 'Размер, байт: ' + fileObj.size +'<br />';
string += 'Тип: ' + fileObj.type +'<br />';
string += 'Пришел ответ от сервера: ' + response +'<br />';
string += 'Файлов в очереди: ' + data.fileCount +'<br />';
string += 'скорость загрузки, KB/s: ' + data.speed +'<br />';
$('#info2').append('<br />Фаил ' + fileObj.name + ' загружен!<br />');
},
'onAllComplete' : function(event, data){ // Срабатывает когда все загрузки завершены
var string = 'Загружено файлов: ' + data.filesUploaded +'\n';
string += 'Ошибок: ' + data.errors +'\n';
string += 'Всего загружено kбайт: ' + data.allBytesLoaded/1024 +'\n';
$('#info,#info2').fadeOut(5000, function() { $('#info,#info2').html('');}); // Плавно прячем информационные блоки и затем очищаем их
}
});
});
</head>
<body>
<div id='demo'>
<h3>Загрузить еще фото:</h3>
<div id='fileQueue'></div>
<input type='file' name='uploadify' id='uploadify' />
<div id='info'></div>
<div id='info2'></div>
</div>
</body>
файл загрузчик: uploadify.php
if (!empty($_FILES))
{
$tempFile = $_FILES['Filedata']['tmp_name'];
if(!$_REQUEST[folder]) $folder = 'foto/'.$id; // Если в js-части мы не определили директорию загрузки, мы можем сделать это здесь
else $folder = $_REQUEST['folder'];
$targetPath = $_SERVER['DOCUMENT_ROOT'] . '/' . $folder . '/';
$targetFile = str_replace('//','/',$targetPath) . $_FILES['Filedata']['name'];
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $folder . '/';
$ext = preg_replace('/(?:.*)(\.{1}[a-zA-Z]{3,4})$/','$1', $_FILES['Filedata']['name']); // определяем расширение загружаемого файла
$unic_name = time().'_'.rand(0,1000).$ext;
$targetFile = str_replace('//','/',$targetPath) . $unic_name;
move_uploaded_file($tempFile,$targetFile);
echo "1"; // Отправляем ответ. Например, просто 1
$url2 = '<img src="'.$folder.'/'.$unic_name.' " width="100" height="100">';
$update = mysql_query ("UPDATE state SET minifoto='$url2' WHERE id='$id'",$db);
}
Чтобы запись обновилась нужно id....
Подскажите как лучше сделать?
Спустя 31 минута, 24 секунды (6.11.2010 - 00:31) Sanchopansa написал(а):
А передать из формы вместе с отправкой файлов? Если ты собираешься обновлять какуюто запись значит у нее уже есть ID. Просто передай его скрипту при загрузке фото.
Спустя 51 минута, 40 секунд (6.11.2010 - 01:23) MillerLight написал(а):
в том то и дело я не могу совместить свою форму и этот скриптик....
Спустя 13 минут, 32 секунды (6.11.2010 - 01:37) Sanchopansa написал(а):
Ну раз уж ты взялся испоьзовать этот плагин JQuery то надо и у них читать про него внемательно... http://www.uploadify.com/documentation/
А именно копай вот тут:
А еще лучше тут http://www.uploadify.com/documentation/options/scriptdata/
А именно копай вот тут:
scriptData
An object containing name/value pairs with additional information that should be sent to the back-end script when processing a file upload.
А еще лучше тут http://www.uploadify.com/documentation/options/scriptdata/
Спустя 14 часов, 21 минута, 39 секунд (6.11.2010 - 15:58) MillerLight написал(а):
помогите доработать код. Нужно добавить чтоб файлы переименовывались
Это взял с загрузчика uploadify
$ext = preg_replace('/(?:.*)(\.{1}[a-zA-Z]{3,4})$/','$1', $_FILES['Filedata']['name']); // определяем расширение загружаемого файла
$unic_name = time().'_'.rand(0,1000).$ext;
куда лучше вставить?
//Проверяем, существует ли имя.
if($_FILES['MINIFOTO']['name']){
if($_FILES['MINIFOTO']['type'] == 'image/jpeg') {
//Проверяем загрузился ли файл на сервер
if(is_uploaded_file($_FILES['MINIFOTO']['tmp_name'])) {
//Проверяем размер файла
if($_FILES['MINIFOTO']['size'] != 0 AND $_FILES['MINIFOTO']['size']<=5000000) {
//Перемещаем загруженный файл в необходимую папку $url
if(move_uploaded_file($_FILES['MINIFOTO']['tmp_name'],
$url."/".$unic_name.$ext)) {
//Выводим сообщение что файл обработа и загружен
echo '<span class=for_form_foto>Файл <b>'.$unic_name.'.jpg</b> был <span class=foto_download>успешно</span> загружен в '.$url; echo '<br><br>';
}
else { echo 'Произошла ошибка при перемещении файла MINIFOTO в папку'.$url;}
}
else {echo 'Размер файла MINIFOTO не должен превышать 100Кб<br>';}
}
else { echo'Прозошла ошибка при загрузке файла MINIFOTO на сервер<br>';}
}
else { echo 'Файл MINIFOTO не является картинкой формата JPG<br>';}
}
else { echo '<span class=for_form_foto>Файл MINIFOTO <span class=no_foto><span class=no_foto>не предоставлен!</span></span><br><br>';}
Это взял с загрузчика uploadify
$ext = preg_replace('/(?:.*)(\.{1}[a-zA-Z]{3,4})$/','$1', $_FILES['Filedata']['name']); // определяем расширение загружаемого файла
$unic_name = time().'_'.rand(0,1000).$ext;
куда лучше вставить?
Спустя 6 минут, 35 секунд (6.11.2010 - 16:05) inpost написал(а):
move_uploaded_file - php.su, читай про эту функцию.
Спустя 2 минуты, 28 секунд (6.11.2010 - 16:07) Sanchopansa написал(а):
не совсем понял суть вопроса... у тебя же генерируется уникальное имя файла..
еще могу посоветовать почитат тут http://www.php.net/manual/en/function.pathinfo.php
еще могу посоветовать почитат тут http://www.php.net/manual/en/function.pathinfo.php
Спустя 3 минуты, 37 секунд (6.11.2010 - 16:11) MillerLight написал(а):
Не то скинул. Вот исходник. а предыдущий это просто я эксперементировл)))
$url = '../foto/'.$id.'/minifoto'; //Путь для сохранения
//МИНИФОТО.
//Проверяем, существует ли имя.
if($_FILES['MINIFOTO']['name']){
if($_FILES['MINIFOTO']['type'] == 'image/jpeg') {
//Проверяем загрузился ли файл на сервер
if(is_uploaded_file($_FILES['MINIFOTO']['tmp_name'])) {
//Проверяем размер файла
if($_FILES['MINIFOTO']['size'] != 0 AND $_FILES['MINIFOTO']['size']<=5000000) {
//Перемещаем загруженный файл в необходимую папку $url
if(move_uploaded_file($_FILES['MINIFOTO']['tmp_name'],
$url."/".basename($_FILES['MINIFOTO']['name']))) {
//Выводим сообщение что файл обработа и загружен
echo '<span class=for_form_foto>Файл <b>'.basename($_FILES['MINIFOTO']['name']).'</b> был <span class=foto_download>успешно</span> загружен в '.$url; echo '<br><br>';
}
else { echo 'Произошла ошибка при перемещении файла MINIFOTO в папку'.$url;}
}
else {echo 'Размер файла MINIFOTO не должен превышать 100Кб<br>';}
}
else { echo'Прозошла ошибка при загрузке файла MINIFOTO на сервер<br>';}
}
else { echo 'Файл MINIFOTO не является картинкой формата JPG<br>';}
}
else { echo '<span class=for_form_foto>Файл MINIFOTO <span class=no_foto><span class=no_foto>не предоставлен!</span></span><br><br>';}