|
|
|
| При помощи данного скрипта загружем фотки на сервер.
if(copy($_FILES["Fot1"]["tmp_name"],
"foto/".$_FILES["Fot1"]["name"]))
{ echo("Файл успешно загружен <br>");}
else {
echo("Ошибка загрузки файла");
}
Работает. Но если имена загружемых файлов совпадут то произойдет перезапись файла. Как избежать перезаписи? | |
|
|
|
|
|
|
|
для: nameivan
(02.12.2008 в 23:00)
| | Именуйте сами, как, вам виднее. Это может бить дата-время, это может быть id статьи/товара, которому будет пренадлежать фото. К имени можно добавлять порядковый номер, если изображений несколько и они пренадлежат одному объекту.
Только не используйте copy() при загрузке изображений/файлов, она использовалась в ранних версих РНР, сейчас для этого служит move_uploaded_file(). | |
|
|
|
|
|
|
|
для: sim5
(03.12.2008 в 05:49)
| | Спасибо.
Все таи решено загружать файлы не в папку а в БД.
Данный фрагмент кодадолжен помещать джипеги в базу, Но не помещает и при этом оибок не выдает. С подобный впервые сталкнлся, помогите ожауйста разобратья
<?php
// Проверяем пришел ли файл
if(!empty($_FILES))
{
// Если файл пришел, то проверяем графический ли он (из соображений безопасности)
if(substr($_FILES['image']['type'], 0, 5)=='image')
{
// Читаем содержимое файла
$image=file_get_contents($_FILES['image']['tmp_name']);
// Экранируем специальные символы в содержимом файла
$image=mysql_escape_string($image);
$link=mysql_connect("localhost", "root", "") or die("Сервер не найден");
mysql_select_db("base") or die("Таблица не найдена");
$query="INSERT INTO `upload` (`file`) VALUES('".$_FILES['image']['tmp_name'].", '".$image."')";
mysql_query($query, $link);
echo mysql_error();
mysql_close($link);
}
}
?> | |
|
|
|
|
|
|
|
для: nameivan
(03.12.2008 в 12:50)
| | Во-первых, не проверяйте тип файла графический он или нет по расширению. Во-вторых, перед записью удостоверьтесь что файл загружен на сервер. В третьих..., зачем вам это надо? Вы даже не удосуживаетесь проверять размеры файлов, которые вы загружаете. Если это маленькие аватарки, еще ладно, но стоит ли держать "гарфических монстров" в базе? Не лучше ли держать в базе имена файлов, путь к ним (лучше ссылку на конфигурацию), другие параметры изображения (если надо), а само изображения в папке? | |
|
|
|
|
|
|
|
для: sim5
(03.12.2008 в 13:03)
| | Убедили. И база не будет раздуваться, и работать будет быстрее. Вопрос в том как это реализовать? Я ранее с этим не сталкивался. Загрузил я файл в папку на сервере а как при этом ссылку на данный файл в БД записать? | |
|
|
|
|
|
|
|
для: nameivan
(03.12.2008 в 15:37)
| | В этом разделе примеров загрузки файлов на сервер много, воспользуйтесь поиском. Посмотрите эти примеры, напишите на этих примерах свой код, и уже, если будут какие либо затруднения, тогда с вопросами на форум. | |
|
|
|
|
|
|
|
для: sim5
(03.12.2008 в 16:08)
| | Данный код кидает файлец в папку и пререименовывает его чтоб совпадений в именах не было.
$dt = date("20Ymd");
srand((float) microtime()*1000000);
$lb = rand();
$gbl = $_FILES["Fot1"]["name"];
if(copy($_FILES["Fot1"]["tmp_name"], "images/".$_FILES["Fot1"]["name"]))
{ $f=$_FILES["Fot1"]["tmp_name"];
$link=mysql_connect("localhost", "root", "") or die("Сервер не найден");
mysql_select_db("base") or die("Таблица не найдена");
$query = "insert into upload (`file`) value ('$f')";
mysql_query($query, $link);
echo mysql_error();
mysql_close($link);
echo("Файл загружен");
}
else
{
echo("Ошибка загрузки файла");
}
$nn = $_FILES["Fot1"]["type"];
$str = $nn;
$exp = explode("/", $str);
rename("images/$gbl", "images/$dt$lb.$exp[1]");
В БД вписывается путь к файлу что то типа Z:mpphpA6.tmp
Это правильно? Или гдето ошибка?
При переименовывании файла расширение тоже меняется на .pjpeg.
Пожалуйста подскажите как теперь этот файл поместить на странице? | |
|
|
|
|
|
|
|
для: nameIvan
(04.12.2008 в 09:33)
| | Так а зачем Вы в базу-то кладете временный путь?
Извращение с именем потрясает отдельно. | |
|
|
|
|
|
|
|
для: Trianon
(04.12.2008 в 09:39)
| | Подскажите как лучше сделать? | |
|
|
|
|
|
|
|
|
для: Trianon
(04.12.2008 в 10:25)
| | Кстати, мне в тот раз это сильно помогло. С тех пор в моей личной консоли есть вот такой скриптик (можно вставлять искомые функции прямо из контекста)
<?php
if(isset($_POST['php']))
{
$a = preg_replace("#[^a-zA-Z_\(]#i", "", $_POST['php']);
$a = preg_replace("#[а-яёА-ЯЁ]#i", "", $a);
$a = preg_replace("#(.*?)\(.*#i", "$1", $a);
header("Location: http://php.net/".$a);
}
?>
<form action='?' method=post >
Найти в мануале <br />
<input name=php onfocus="this.value=''" type=text ><br>
<input type=submit value=Найти >
</form>
| может кому пригодится... | |
|
|
|
|
|
|
|
для: nameIvan
(04.12.2008 в 09:33)
| | Нет не правильно, потому как вы передаете в базу совсем не то, что требуется. И вообще, я вам уже говорил о copy(). Что за версией РНР вы пользуетесь?
Прочтите сперва это:
http://www.php.net/manual/ru/function.move-uploaded-file.php
http://www.php.net/manual/ru/features.file-upload.php | |
|
|
|
|
|
|
|
для: sim5
(04.12.2008 в 09:42)
| | спасибо, сделал, работает | |
|
|
|
|
|
|
|
для: nameivan
(04.12.2008 в 11:35)
| | Ну и слава богу. Только держать ссылку на изображение в базе как "images/".$_FILES["Fot1"]["name"], тоже не всегда оправдано. | |
|
|
|
|
|
|
|
для: nameivan
(02.12.2008 в 23:00)
| | Сделал загрузка файла на сервер и ресайз. Теперь столкнулся с проблемой загрузка и ресайзом нескольких файлов сразу. Причем один файл обязательно должен загрузить пользователь а второй, третий и т.д. пользователю загружать необязательно Подскажите пожалуйста как решить данную проблему?
<form action="upload.php" method="post" enctype="multipart/form-data">
<input name="Fot1" type="file" id="Fot1">
<br>
<input name="Fot2" type="file" id="Fot2">
<br>
<input type="submit" value="Загрузить"><br>
</form>
|
<?
$f1 = time().$_FILES["Fot1"]["name"];
if(copy($_FILES["Fot1"]["tmp_name"], "images/".$f1))
{
$path = array('from'=>"images/$f1", 'to'=>"images/small/$f1");
$res=resize_img($path, 150, 100);
$link=mysql_connect("localhost", "root", "") or die("Сервер не найден");
// выбор таблицы
mysql_select_db("base") or die("Таблица не найдена");
$query = "insert into upload (`file`) value ('$f1')";
mysql_query($query, $link);
echo mysql_error();
// закрываем солединение
mysql_close($link);
echo("Файл загружен");
}
else
{
echo("Ошибка загрузки файла");
}
?>
|
| |
|
|
|