Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 22.11.2005, 17:50
Antoine вне форума Посмотреть профиль Отправить личное сообщение для Antoine Найти все сообщения от Antoine
  № 1  
Ответить с цитированием
Antoine

Регистрация: Sep 2005
Сообщений: 45
Arrow Проблема с закачкой файлов базу.

Перечитал сообщения на форуме и не только на этом но так и несмог понять в чём дело.
Задача значит такая - выводится таблица с файломи закаченными пользователем (размер, тип и т.п.), но нужно чтобы название файла было ссылкой а вместо этого какие-то каракули и ссылка никуда не приводит. Вот посмотрите пожалуйста:
Это аплод:

PHP код:
function upload($username)  
{         
    function 
get_extension($filename)          
    
//This function uses regular expressions to find extension of uploaded file.
         
ereg("\.(.+)$"$filename$ext);   return $ext[0];         }    
           
//Setting variables short names.         
$upload $_FILES['upload']['tmp_name'];   
$upload_name $_FILES['upload']['name'];   
$upload_size $_FILES['upload']['size'];   
$upload_type $_FILES['upload']['type'];   
$ext get_extension($upload_name);   
$file addslashes(fread(fopen($upload"r"),$upload_size));               
$query "insert into data values ('".$username."','".$file."','".$upload_name."','".$upload_type."','".$upload_size."','".$ext."')";     
$result mysql_query($query);         
if (!
$result)          
{  
   echo 
'Can\'t upload file. Request for admin help.';      
    exit;         
}        
echo 
'File'.$upload_name.'succsessfully loaded';           

И просмотр:

PHP код:
]<?php   
function get_user_files($login,$db)   
{         
//This function get list of files of registered user.           
$query "select * from data where username='".$login."'";         
$result mysql_query($query,$db);         
echo 
'<form action="delete.php" method="post">             
         <table width="200" border="1"><tr>
<th>Name</th>
<th>Type</th>
<th>Size</th>          
<th>Extension</th>
<th>Delete?</th></tr>'
;   
while (
$row mysql_fetch_array($resultYSQL_ASSOC))       
{echo 
'<tr><td><a href="'.$row['file'].'>'.$row['name'].'</a>
</td><td>'
.$row['type'].'   
</td><td>'
.$row['size'].'
</td><td>'
.$row['ext'].'/>';   
}         
echo 
'</table>   </form>';  }    
?>


Последний раз редактировалось Antoine; 22.11.2005 в 17:54.
Старый 22.11.2005, 21:45
Skubent вне форума Посмотреть профиль Отправить личное сообщение для Skubent Посетить домашнюю страницу Skubent Найти все сообщения от Skubent
  № 2  
Ответить с цитированием
Skubent
 
Аватар для Skubent

Регистрация: Oct 2005
Адрес: Млечный Путь, 7-й рукав, YD AC-451, 3-я планета.
Сообщений: 996
Отправить сообщение для Skubent с помощью ICQ
move_uploaded_file тебе поможет.
То есть после закачки, файл надо перенести в доступное по http место ( к примеру, в специально созданную директорию в корне сайта) и писать в базу место "постоянной дислокации" зачанного файла.
А по пути $_FILES['upload']['tmp_name'] к моменту просмотра может ничего не оказаться. К тому же директория для складирования временных файлов как правило недоступна для веб-сервера
__________________
Тут вы найдете ответы на почти все вопросы:
А можно ли сделать так ? - Можно.
Почему не работает ? - Неправильно сделано.
Где ошибка ? - В ДНК.

Старый 23.11.2005, 02:48
Antoine вне форума Посмотреть профиль Отправить личное сообщение для Antoine Найти все сообщения от Antoine
  № 3  
Ответить с цитированием
Antoine

Регистрация: Sep 2005
Сообщений: 45
Переписал но не помогло.

Мне нужно чтобы скрипт выводи спсок файлов принадлежащих конкретному юзеру ввиде ссылок на них и потом по нажатии на эти ссылки можно было этот файл закачать. Хранить обязательно в БД сами файла, а не пути к ним.
Бьюсь уже 2 суток почти без перерыыва и не знаю как.
На phpclub.ru все очень крутые и не захотели мне отвечать.
Помогите бо очень надо.

Старый 23.11.2005, 15:05
Skubent вне форума Посмотреть профиль Отправить личное сообщение для Skubent Посетить домашнюю страницу Skubent Найти все сообщения от Skubent
  № 4  
Ответить с цитированием
Skubent
 
Аватар для Skubent

Регистрация: Oct 2005
Адрес: Млечный Путь, 7-й рукав, YD AC-451, 3-я планета.
Сообщений: 996
Отправить сообщение для Skubent с помощью ICQ
//Этот кусок в принципе работает, если складывать файлы в базу.
$upload = $_FILES['upload']['tmp_name'];
$upload_name = $_FILES['upload']['name'];
$upload_size = $_FILES['upload']['size'];
$upload_type = $_FILES['upload']['type'];
$ext = get_extension($upload_name);
$file = addslashes(fread(fopen($upload, "r"),$upload_size));
/*
а вот работает ли запрос - вопрос, тут надо глядеть, что у тебя в базе твориться. Предполагается, что структура таблицы имеет вид
CREATE TABLE my_table (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, username VARCHAR(25), filedata BLOB, filename VARCHAR(50), filetype VARCHAR(8), filesize INT, fileext VARCHAR(8))
Тогда запрос принимает вид:
*/
$query = "INSERT INTO my_table SET
username = '$username',
filedata = '$file',
filename = '$upload_name',
filetype = '$upload_type',
filesize = '$upload_size',
fileext = '$ext')";
$result = mysql_query($query);
/*---вроде как сложили все в базу, правда могут быть косяки с BLOB'om, но это уже копать в сторону версии mySQL и php, тут только RTFM спасает ---*/
/*
Теперь помыслим про доставание списка.
*/
function get_user_files($login,$db)
{
//тут - адрес страницы-обработчика файлов.
$adres = 'file.php';
$query = "SELECT * FROM filedata WHERE username='$login' ";
$result = mysql_query($query,$db);
<table width="200" border="1"><tr>
<th>Name</th>
<th>Type</th>
<th>Size</th>
<th>Extension</th></tr>';
while ($row = mysql_fetch_array($result, YSQL_ASSOC))
{echo '<tr><td><a href=$adres?id="'.$row['id'].'>'.$row['name'].'</a>
</td><td>'.$row['type'].'
</td><td>'.$row['size'].'
</td><td>'.$row['ext'].'/>';
}
echo '</table>'; }
/*Теперь - содержание файла-обработчика, в нашем примере file.php*/
<?php
if (!isset($_GET['id'])) {die("Нет ничего.");}
//это чтобы фигню не написали :
$id = $_GET['id'] + 1;
$id = $id - 1;
/*выполним соединение с базой, достанем данные*/
$db = mysql_connect('host', 'login', 'pass');
mysql_select_db('database', $db);
$result = mysql_query("SELECT filedata, filetype, filesize FROM my_table WHERE id='$id'", $db);
$row = mysql_tetch_array($result);
/*отправим в браузер информацию о типе и размере файла*/
header("Content-type: ".$row[1]."\r\nContent-Length: ".$row[2]);
/*Выведем содержимое*/
echo $row[0];
mysql_free_result($result);
mysql_close($db);
?>
__________________
Тут вы найдете ответы на почти все вопросы:
А можно ли сделать так ? - Можно.
Почему не работает ? - Неправильно сделано.
Где ошибка ? - В ДНК.

Старый 23.11.2005, 15:20
Antoine вне форума Посмотреть профиль Отправить личное сообщение для Antoine Найти все сообщения от Antoine
  № 5  
Ответить с цитированием
Antoine

Регистрация: Sep 2005
Сообщений: 45
Спасибо огоромное.
Вот это я понимаю нормальный ответ и форум.
Впринципе я уже нашёл, что искал так что кому интересно смоотрите:

http://www.php-mysql-tutorial.com/php-mysql-upload.php

http://www.devarticles.com/c/a/MySQL...P-and-MySQL/3/

Старый 23.11.2005, 17:32
Antoine вне форума Посмотреть профиль Отправить личное сообщение для Antoine Найти все сообщения от Antoine
  № 6  
Ответить с цитированием
Antoine

Регистрация: Sep 2005
Сообщений: 45
Тут так сказать развитие ситуации.
Как справится с проблемой закачивания файлов названия которых на русском языке. А то вот такое:

Warning: move_uploaded_file(../files/Antoine/????? ?? ?????.jpg) [function.move-uploaded-file]: failed to open stream: Invalid argument in D:\Antony\Papers\Works\PHP\Base\www\diplom\script\upload_func.php on line 20

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\WINDOWS\TEMP\php350.tmp' to '../files/Antoine/????? ?? ?????.jpg' in D:\Antony\Papers\Works\PHP\Base\www\diplom\script\upload_func.php on line 20
Possible file upload attack!
Warning: fopen(../files/Antoine/????? ?? ?????.jpg) [function.fopen]: failed to open stream: Invalid argument in D:\Antony\Papers\Works\PHP\Base\www\diplom\script\upload_func.php on line 29

Warning: fread(): supplied argument is not a valid stream resource in D:\Antony\Papers\Works\PHP\Base\www\diplom\script\upload_func.php on line 29

Warning: fclose(): supplied argument is not a valid stream resource in D:\Antony\Papers\Works\PHP\Base\www\diplom\script\upload_func.php on line 30
File ????? ?? ?????.jpg succsessfully loaded to database.
Go to members page
Warning: unlink(../files/Antoine/????? ?? ?????.jpg) [function.unlink]: Invalid argument in D:\Antony\Papers\Works\PHP\Base\www\diplom\script\upload_func.php on line 43

И ещё при нажатии на сслку файл закачивается с именем скрипта хотя я и передал header("Content-Disposition: attachment; filename=$name");
и к тому же оказывается битым.

Старый 23.11.2005, 19:25
Antoine вне форума Посмотреть профиль Отправить личное сообщение для Antoine Найти все сообщения от Antoine
  № 7  
Ответить с цитированием
Antoine

Регистрация: Sep 2005
Сообщений: 45
С тем что закачивается битым разобрался, но имя всё-равно download.
Ну и файла с русскими названиями всё равно вадают ошибку.

Создать новую тему Ответ Часовой пояс GMT +4, время: 23:28.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 23:28.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.