![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Sep 2005
Сообщений: 45
|
Перечитал сообщения на форуме и не только на этом но так и несмог понять в чём дело.
Задача значит такая - выводится таблица с файломи закаченными пользователем (размер, тип и т.п.), но нужно чтобы название файла было ссылкой а вместо этого какие-то каракули и ссылка никуда не приводит. Вот посмотрите пожалуйста: Это аплод:
Последний раз редактировалось Antoine; 22.11.2005 в 17:54. |
|
|||||
|
move_uploaded_file тебе поможет.
То есть после закачки, файл надо перенести в доступное по http место ( к примеру, в специально созданную директорию в корне сайта) и писать в базу место "постоянной дислокации" зачанного файла. А по пути $_FILES['upload']['tmp_name'] к моменту просмотра может ничего не оказаться. К тому же директория для складирования временных файлов как правило недоступна для веб-сервера ![]()
__________________
Тут вы найдете ответы на почти все вопросы: А можно ли сделать так ? - Можно. Почему не работает ? - Неправильно сделано. Где ошибка ? - В ДНК. |
|
|||||
|
Регистрация: Sep 2005
Сообщений: 45
|
Переписал но не помогло.
Мне нужно чтобы скрипт выводи спсок файлов принадлежащих конкретному юзеру ввиде ссылок на них и потом по нажатии на эти ссылки можно было этот файл закачать. Хранить обязательно в БД сами файла, а не пути к ним. Бьюсь уже 2 суток почти без перерыыва и не знаю как. На phpclub.ru все очень крутые и не захотели мне отвечать. Помогите бо очень надо. |
|
|||||
|
//Этот кусок в принципе работает, если складывать файлы в базу.
$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); ?>
__________________
Тут вы найдете ответы на почти все вопросы: А можно ли сделать так ? - Можно. Почему не работает ? - Неправильно сделано. Где ошибка ? - В ДНК. |
|
|||||
|
Регистрация: Sep 2005
Сообщений: 45
|
Спасибо огоромное.
Вот это я понимаю нормальный ответ и форум. Впринципе я уже нашёл, что искал так что кому интересно смоотрите: http://www.php-mysql-tutorial.com/php-mysql-upload.php http://www.devarticles.com/c/a/MySQL...P-and-MySQL/3/ |
|
|||||
|
Регистрация: 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"); и к тому же оказывается битым. |
|
|||||
|
Регистрация: Sep 2005
Сообщений: 45
|
С тем что закачивается битым разобрался, но имя всё-равно download.
Ну и файла с русскими названиями всё равно вадают ошибку. |
![]() |
![]() |
Часовой пояс GMT +4, время: 23:28. |
|
|
« Предыдущая тема | Следующая тема » |
|
|