Как сделать, чтобы после загрузки файла через Uploadify показывался URL файла?
Тут я и гуглил, находил такой же вопрос, как и мой, и смотрел исходник, пытался что-то своё добавить, но ничего не срабатывало, хоть и в скрипте есть такой комментарий:
'onComplete' : function(event, queueID, fileObj, response, data){ // Срабатывает когда файл загружен на сервер. По умолчанию файл удаляется из очереди, но мы можем и добваить свои какие-либо действия
Вот я и пытался добавить свои действия, но они не срабатывали, ну, например:
$link = $files_dir.$_FILES["file"]["name"];
echo '<a href="'.$link.'">Ваша ссылка</a>';
Ну, ближе к делу:
Исходник index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Uploadify Демо</title>
<link href="css/default.css" rel="stylesheet" type="text/css" />
<link href="css/uploadify.css" rel="stylesheet" type="text/css" />
<!--<script src="//saksmart.ru/razdeli/download/scripts/jquery.min.js"></script>-->
<script type="text/javascript" src="scripts/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' : 'uploads', // Путь к папке, в которой Вы хотите сохранять загружаемые файлы.
//Эту настройку можно опустить, тогда папку загрузки необходимо определить в uploadify.php
//Помните! На большистве хостингов, папка, в которую Вы пытаетесь загрузить файлы должна быть доступна на запись, не забудьте выставить соответствующие права
'queueID' : 'fileQueue', // ID элемента, в котором будет показываться очередь загрузки
'queueSizeLimit' : '30', // Лимит очереди (максим. число загруж файлов). По умолчанию 999
'auto' : true, // Если истина, загрузка начнется сразу после выбора файлов
'multi' : true, // Если истина, то разрешена загрузка нескольких файлов
'fileDesc' : '*.7z; *.exe; *.rar; *.jpg; *.avi; *.MOV; *.mp4; *.MPG' , // Текст, который будет внизу появляющегося диалогового окна. Без этого параметра будет написано "Все файлы('.')"
'fileExt' : '*.jpg; *.jpeg; *.JPG; *.7z; *.JPE; *.jpe; *.7z; *.exe; *.rar; *.jpg; *.avi; *.MOV; *.mov; *.mp4; *.MPG; *.flv; *.mkv; *.txt', // разрешенные к загрузке файлы (остальные в диалолговом окне будути скрыты)
'sizeLimit' : 1567033999, // Макс. Размер файла для каждой загрузки (в байтах). Если не указываем, ограничено будет только настройками Вашего сервера
'simUploadLimit' : 2, // Ограничение на кол-во одновременных закачек. По умолчанию 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(20000, function() { $('#info,#info2').html('');}); // Плавно прячем информационные блоки и затем очищаем их
}
});
});
</script>
</head>
<body>
<div id="DOWNLOAD">
<h1><strong>Загрузка файлов </strong></h1>
<div id="fileQueue"></div>
<input type="file" name="uploadify" id="uploadify" />
<div id="info"></div>
<div id="info2"></div>
</div>
</body>
</html>
Исходник uploadify.php
<?php
/*
Конкретный скрипт загрузки файлов .
*/
if (!empty($_FILES)) {
$tempFile = $_FILES['Filedata']['tmp_name'];
if(!$_REQUEST[folder]) $folder = '../uploads/'; // Если в js-части мы не определили директорию загрузки, мы можем сделать это здесь
else $folder = $_REQUEST['folder'];
$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;
Если с пониманием относиться к данному вопросу, то правильней было выложить не только исходник, но и файл, вот ссылка.
Если у кого-то экспериментально получилось заставить скрипт выводить ссылку на файл, прошу архивировать скрипт и залить через старую версию скрипта на моём сайте. После этого авторы, помогшие редактировать скрипт, будут указаны на сайте не раньше 20 апреля...
Спасибо за внимание, буду рад конкретному ответу на мой вопрос.