Загрузка пользователем файла и картинки к нему (модуль Files для Slaed 2.1 Lite)
В стандартном варианте пользователю ну никак не загрузить скриншот с компьютера вместе с файлом - по умолчанию скриншот должен хранится на каком-то другом сайте, что очень неудобно пользователям.
Сегодня мы решим эту проблему стандартными функицями Slaed 2.1
I. Редактируем modules/Files/index.php
1. Добавляем поле с кнопочкой "Обзор" для чего редактируем функцию function add_file()
Код | 1 2 3 4 5 6 7 8 9
| echo "<tr><td>"._FILELINK.":</td><td><input type="text" name="filelink" maxlength="100" value="http://" size="65" style="width:400px"></td></tr>"
#---------------------------- начало изменений
."<tr><td>Загрузить картинку:</td><td><input name=\"userimg\" type=\"file\" size=\"65\" style=\"width:400px\"></td></tr>"
#---------------------------- конец изменений
."<tr><td>"._IMGLINK.":</td><td><input type="text" name="imglink" maxlength="100" value="http://" size="65" style="width:400px"></td></tr>"
."<tr><td>"._FILEVERSION.":</td><td><input type="text" name="f_version" maxlength="10" size="65" style="width:400px"></td></tr>"
."<tr><td>"._FILESIZE.":</td><td><input type="text" name="file_size" maxlength="10" size="65" style="width:400px"></td></tr>";
echo "<tr><td colspan="2" align="center"><input type="hidden" name="op" value="file_send">"
."<input type="submit" value=""._FADD.""></td></tr></form></table>"; |
2. Редактируем function file_send Все изменения вносим после строки
Код | 1
| $filename = upload($temp_path, $ftypefile, $max_size, "Files", "", ""); |
т.е. после того, как основной файл уже загружен на сервер.
2.1. Объявляем глобальные переменные из конфигурации модуля, отвечающие за тип картинки и ее размер
Код | 1
| global $fitypefile, $fimaxsize, $fiwidth, $fiheight; |
2.2. Изучив функцию upload, мы видим, что подгружается переменная, пришедшая как $_FILES['userfile']. Что бы не мудрить с клонированием функции upload для загрузки картинки, используем существующую, для чего перенесем все параметры из $_FILES['userimg'] в $_FILES['userfile'] (userimg - так мы назвали поле в шаге первом).
Код | 1
| $_FILES['userfile'] = $_FILES['userimg']; |
2.3. Загружаемой картинке назначим имя, совпадающее с именем загружаемого файла (почти), потому что помним, что для файлов генирируется уникальное имя, дабы избежать неудобств с одноименными. В дальнейшем, например при чистке каталога файлов, это очень пригодится.
Код | 1 2
| $img_f1 = explode(".", "$filename");
$img_f = $img_f1[0]; |
2.4. Загружаем картинку и получаем ее новое имя.
Код | 1
| $img_new_link = upload($temp_path, $fitypefile, $fimaxsize, $img_f, $fiwidth, $fiheight); |
2.5. Назначаем полный путь к картинке, находящейся в папке временных файлов.
Код | 1
| if (isset ($img_new_link)) {$imglink = $temp_path."/".$img_new_link;} |
Всё, теперь в базу отправится путь к картинке, лежащей в папке временных файлов.
В итоге вот что получилось
Код | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| if (!$stop && $title && $description && $author && $f_version) {
$filename = upload($temp_path, $ftypefile, $max_size, "Files", "", "");
#---------------------------- начало изменений
global $fitypefile, $fimaxsize, $fiwidth, $fiheight;
if ($_FILES['userimg']['size']>0) {
$_FILES['userfile'] = $_FILES['userimg'];
$img_f1 = explode(".", "$filename");
$img_f = $img_f1[0];
$img_new_link = upload($temp_path, $fitypefile, $fimaxsize, $img_f, $fiwidth, $fiheight);
if (isset ($img_new_link)) {$imglink = $temp_path."/".$img_new_link;}
}
#---------------------------- конец изменений
if ($filename && !$stop) {
$file_name = "".$temp_path."/".$filename."";
$file_size = filesize($file_name); |
Дата публикации: 04.02.2007 Прочитано: 11482 раз |
|