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

Форум PHP

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

 

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

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

тема: загрузка файлов на сервер...повторяющиеся имена!
 
 автор: One art galery   (18.12.2006 в 17:10)   письмо автору
 
 

Вот у меня есть самый простой скрипт загрузки файла на сервер:

<?php
  
if(copy($_FILES["filename"]["tmp_name"],
     
"images/".$_FILES["filename"]["name"]))
  {
    echo(
"Файл успешно загружен");
    
  }
  else
  {
   echo(
"Ошибка загрузки файла");
  }
?>

(данные берутся из формы)

Так вот сталкнулся с проблемой, что если загружать файл одноо имени то преддущий файл удаляеться а новый закачевается.
Вот непомойму как сделать чтобы если файл с таким именим уже был выдавлось ошибка,
толи сделать через FTP, в форме добавить пункт имя для файла, и кнопку проверить.

Подскажите как(ну конечно же лучше покажите!) БУДУ ОЧЕНЬ БЛАГОДАРЕН

   
 
 автор: NFR   (18.12.2006 в 17:16)   письмо автору
 
   для: One art galery   (18.12.2006 в 17:10)
 


<?
if(file_exists("images/".$_FILES["filename"]["name"]))  echo "А такой файл уже есть!";

   
 
 автор: Night_charter   (18.12.2006 в 17:17)   письмо автору
 
   для: One art galery   (18.12.2006 в 17:10)
 

Можно сделать проверку, при помощи file_exists()
http://php.net/file_exists
Или же переименовать файлы при загрузке, генерируя случайный фрагмент символов или цифр - rename()
http://php.net/manual/ru/function.rename.php

   
 
 автор: One art galery   (19.12.2006 в 21:07)   письмо автору
 
   для: Night_charter   (18.12.2006 в 17:17)
 

Вот, кому интересна, я немого поизощрявшись сделал скрипт с очень малой вероятностью того что имена совпадут!

<?php
$dt 
date("20ymd");
srand((float) microtime()*1000000);
$lb rand();
$gbl $_FILES["filename"]["name"];

  if(
copy($_FILES["filename"]["tmp_name"],
     
"upload/temp/".$_FILES["filename"]["name"]))
  {
    echo(
"Файл на <b>1</b> стадии успешно загружен");
      }
  else
  {
   echo(
"Ошибка загрузки файла");
  }
  
$nn $_FILES["filename"]["type"];
$str $nn;
$exp explode("/"$str);


echo 
"<br><span class=\"style1\">";
  
 if(
rename("upload/temp/$gbl""images/$dt$lb.$exp[1]"))
  {
    echo(
"Файл на <b>2</b> стадии успешно загружен");  }
    
// далее выводится информация о файле 
    
echo("Характеристики файла: <br>");
    echo(
"Имя файла: ");
    echo(
$_FILES["filename"]["name"]);
    echo(
"<br>Размер файла: ");
    echo(
$_FILES["filename"]["size"]);
    echo(
"<br>Каталог для загрузки: ");
    echo(
$_FILES["filename"]["tmp_name"]);
    echo(
"<br>Тип файла: ");
    echo(
$_FILES["filename"]["type"]);
 else
  {  echo 
"Файл на <b>2</b> стадии <b>не загружен</b>";  }
  
  echo 
"<br></span><br>";
  
?>


PS у формы добавления файла вот такое имя: name="filename"

   
 
 автор: Trianon   (19.12.2006 в 21:24)   письмо автору
 
   для: One art galery   (19.12.2006 в 21:07)
 

чем dt не $dt = date("YmdHis"); ?

   
 
 автор: One art galery   (19.12.2006 в 21:32)   письмо автору
 
   для: Trianon   (19.12.2006 в 21:24)
 

хыхы...
конечно было как у вас...
но есть различия в написании буквы "Y"(у меня маленькая, а у вас большая)

маленькая выводит только "06" а большая "2006" . поэтому я и добавил "20"(хотя тогда у моего скрипта был бы срок годности до 2099г =)

------------------
сейчас исправлю!!! =)

   
Rambler's Top100
вверх

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