Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Поле upload
 
 автор: Vova   (04.10.2005 в 18:17)   письмо автору
 
 

Хочу осуществить такую задачу:

Загружать файл на сервер и чтобы в базе в поле прописывался 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(
"Ошибка загрузки");
}

?>


А как мне сделать табличку, с линками на загруженные файлы?

   
 
 автор: cheops   (05.10.2005 в 01:01)   письмо автору
 
   для: Vova   (04.10.2005 в 18:17)
 

Вы хотите это сделать при помощи MySQL или просто ошиблись разделом?

   
 
 автор: Vova   (05.10.2005 в 12:34)   письмо автору
 
   для: cheops   (05.10.2005 в 01:01)
 

MySQL ведь здесь тоже присутствует. Или это больше относится к PHP?
В любом случае, как это можно осуществить?

   
 
 автор: cheops   (05.10.2005 в 14:05)   письмо автору
 
   для: Vova   (05.10.2005 в 12:34)
 

А, я последнее предоложение не заметил :)))

   
 
 автор: cheops   (05.10.2005 в 14:12)   письмо автору
 
   для: 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

   
 
 автор: Vova   (07.10.2005 в 15:13)   письмо автору
 
   для: 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(
"Ошибка загрузки файла");
}

?>


Как я понимаю ошибка в пути, куда должен скопироваться файл?

   
 
 автор: cheops   (07.10.2005 в 16:03)   письмо автору
 
   для: Vova   (07.10.2005 в 15:13)
 

Нет обращаться по "http://www.namedomen.com/up/" нельзя - это сетевой путь - он только для "чтения" и то HTML-кода. Если вы хотите обратится по абсолютному пути, то необходимо указывать путь от корня сервера как правило это будет что-то в роде /usr/html/hosting/sitemame/html/ - узнать его можно либо у хостера, либо в таблицах phpinfo()
<?php
  phpinfo
();
?>

или так
<?php
  
echo $_SERVER["ORIG_PATH_TRANSLATED"];
?>

Но лучше использовать относительные пути - скрипт будет более переносимым.

   
 
 автор: Vova   (07.10.2005 в 18:54)   письмо автору
 
   для: 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/, что бы при нажатии можно было скачать файл.

   
 
 автор: cheops   (07.10.2005 в 23:15)   письмо автору
 
   для: Vova   (07.10.2005 в 18:54)
 

А вы в copy() подствляйте абсолютный URL от корня серврера, а в базу записывайте сетевой путь с http:// - всё в ваших руках :)))

   
 
 автор: Vova   (18.10.2005 в 10:53)   письмо автору
 
   для: 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(!
$prtputerror("Ошибка при запросе к таблице 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 в 14:44)   письмо автору
 
   для: Vova   (18.10.2005 в 10:53)
 

Спасибо, разобрался. Всё работает :) Будем думать дальше :).

   
 
 автор: Vova   (18.10.2005 в 16:39)   письмо автору
 
   для: Vova   (18.10.2005 в 14:44)
 

Сорри, опять успел сам решить проблему, которую здесь написал. :)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования