|
|
|
| Хочу осуществить такую задачу:
Загружать файл на сервер и чтобы в базе в поле прописывался url закаченного файла. Чтобы по этому линку можно было бы скачать файл.
Вот так загружаю файл
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="filename"><br>
<input type="submit" value="Загрузить"><br>
</form>
|
это upload.php
<?php
if(copy($_FILES["filename"]["tmp_name"],
"c:/temp/".$_FILES["filename"]["name"]))
{
}
else
{
echo("Ошибка загрузки");
}
?>
|
А как мне сделать табличку, с линками на загруженные файлы? | |
|
|
|
|
|
|
|
для: Vova
(04.10.2005 в 18:17)
| | Вы хотите это сделать при помощи MySQL или просто ошиблись разделом? | |
|
|
|
|
|
|
|
для: cheops
(05.10.2005 в 01:01)
| | MySQL ведь здесь тоже присутствует. Или это больше относится к PHP?
В любом случае, как это можно осуществить? | |
|
|
|
|
|
|
|
для: Vova
(05.10.2005 в 12:34)
| | А, я последнее предоложение не заметил :))) | |
|
|
|
|
|
|
|
для: Vova
(04.10.2005 в 18:17)
| | Для этого следует сформировать таблицу, например, следующего содержания
CREATE TABLE filename (
id int(11) NOT NULL auto_increment,
name tinytext NOT NULL,
PRIMARY KEY (id)
) TYPE=MyISAM;
|
А обработчик upload.php преобразовать следующим образом
<?php
// Устнавливаем соединение с базой данных
include "config.php";
// Проверяем загружен ли файл
if(copy($_FILES["filename"]["tmp_name"],
"c:/temp/".$_FILES["filename"]["name"]))
{
$query = "INSERT INTO filename VALUES(NULL, 'c:/temp/".$_FILES["filename"]["name"]."')";
if(!mysql_query($query)) exit("Ошибка - ".mysql_error());
}
else
{
echo("Ошибка загрузки");
}
?>
|
Для установки соединения с базой данных используется файл config.php, посмотреть содержимое которого можно в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=3803 | |
|
|
|
|
|
|
|
для: cheops
(05.10.2005 в 14:12)
| | На локалке всё так сделал, всё нормально загрузилось и прописался урл в таблицу filename.
Попробовал тоже самое на хостинге, прописывал пути по разному и таже абсолютный путь http://www.namedomen.com/up/ вместо c:/temp/ пишет "Ошибка загрузки файла."
Вот код upload.php
<?php
// Устнавливаем соединение с базой данных
include "config.php";
// Проверяем загружен ли файл
if(copy($_FILES["filename"]["tmp_name"],
"http://www.namedomen.com/up/".$_FILES["filename"]["name"]))
{
echo("Файл успешно загружен");
// инфа о загруженном файле
echo("<br>Характеристики файла:<br>");
echo("Имя файла: ");
echo($_FILES["filename"]["name"]);
echo("<br>Размер файла: ");
echo($_FILES["filename"]["size"]); echo(" байт");
echo("<br>Каталог для загрузки: ");
echo($_FILES["filename"]["tmp_name"]);
echo("<br>Тип файла: ");
echo($_FILES["filename"]["type"]);
$query = "INSERT INTO filename VALUES(NULL, 'http://www.namedomen.com/up/".$_FILES["filename"]["name"]."')";
if(!mysql_query($query)) exit("Ошибка - ".mysql_error());
}
else
{
echo("Ошибка загрузки файла");
}
?>
|
Как я понимаю ошибка в пути, куда должен скопироваться файл? | |
|
|
|
|
|
|
|
для: Vova
(07.10.2005 в 15:13)
| | Нет обращаться по "http://www.namedomen.com/up/" нельзя - это сетевой путь - он только для "чтения" и то HTML-кода. Если вы хотите обратится по абсолютному пути, то необходимо указывать путь от корня сервера как правило это будет что-то в роде /usr/html/hosting/sitemame/html/ - узнать его можно либо у хостера, либо в таблицах phpinfo()
или так
<?php
echo $_SERVER["ORIG_PATH_TRANSLATED"];
?>
|
Но лучше использовать относительные пути - скрипт будет более переносимым. | |
|
|
|
|
|
|
|
для: cheops
(07.10.2005 в 16:03)
| | Всё получилось! Правда ещё пришлось chmod нужный поставить на папку, куда загружались файлы.
Но теперь такая проблемка: Указал путь что-то вроде /usr/html/hosting/sitemame/html/up и урл сайта прописался в базу /usr/html/hosting/sitemame/html/up/namefile.txt
И при выводе таблички будет такой "нехороший урл", как его зделать нормальным - http://www.namedomen.com/up/, что бы при нажатии можно было скачать файл. | |
|
|
|
|
|
|
|
для: Vova
(07.10.2005 в 18:54)
| | А вы в copy() подствляйте абсолютный URL от корня серврера, а в базу записывайте сетевой путь с http:// - всё в ваших руках :))) | |
|
|
|
|
|
|
|
для: cheops
(07.10.2005 в 23:15)
| | Вроде всё сделал, единственное, никак не могу организовать в табличке, чтобы в столбце name выводились линки на загруженные файлы. С названием, допустим "Скачать".
<?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> Результат загрузки файла </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>
<BODY>
<?php
// Устнавливаем соединение с базой данных
include "config.php";
// Проверяем загружен ли файл
if(copy($_FILES["filename"]["tmp_name"],
"C:/Temp/".$_FILES["filename"]["name"]))
{
echo("Файл успешно загружен");
// инфа о загруженном файле
echo("<br>Характеристики файла:<br>");
echo("Имя файла: ");
echo($_FILES["filename"]["name"]);
echo("<br>Размер файла: ");
echo($_FILES["filename"]["size"]); echo(" байт");
echo("<br>Каталог для загрузки: ");
echo($_FILES["filename"]["tmp_name"]);
echo("<br>Тип файла: ");
echo($_FILES["filename"]["type"]);
$query = "INSERT INTO filename VALUES(NULL, 'http://localhost/spo/".$_FILES["filename"]["name"]."')";
if(!mysql_query($query)) exit("Ошибка - ".mysql_error());
}
else
{
echo("Ошибка загрузки файла");
}
$query = "SELECT * FROM filename";
$prt = mysql_query($query);
if(!$prt) puterror("Ошибка при запросе к таблице filename");
// количество рядов в наборе должно быть больше нуля
if (mysql_num_rows($prt)>0)
{
$href = 'C:/Temp/".$_FILES["filename"]["name"]."';
?>
<table class="table" border="1" cellpadding="3" cellspacing="0" width="800" bordercolordark="white" bordercolorlight="silver">
<tr class="zagtrtable" align="center">
<td align=center><p class=help>Номер</td>
<td align=center><p class=help>Скачать</td>
</tr>
<?
while($par = mysql_fetch_array($prt))
{
// Выводим строку таблицы
echo "<tr>
<td>".$par['id']."</td>
// <td>".$par['name']."</td>
<td><a href=".$par['name']."</a></td>
</tr>";
}
}
?>
</table>
</BODY>
</HTML>
?>
|
Вот эта часть
<a href=".$par['name']."</a>
|
не получается. | |
|
|
|
|
|
|
|
для: Vova
(18.10.2005 в 10:53)
| | Спасибо, разобрался. Всё работает :) Будем думать дальше :). | |
|
|
|
|
|
|
|
для: Vova
(18.10.2005 в 14:44)
| | Сорри, опять успел сам решить проблему, которую здесь написал. :) | |
|
|
|