загрузить изображение в php по его URL - PullRequest
2 голосов
/ 08 мая 2011

У меня есть эта форма для загрузки изображений:

<form method="post" action="upld.php" name="insertForm"  enctype="multipart/form-data">
Image name:<br />
<input type="text" name="iname" /><br />
<input type="file" name="file" />
<input type="submit" name="upload" value="Upload" />

</form>

и вот upld.php

<?php
$db_name = "DB_name";
$table_name = "tble";
$connection = mysql_connect("localhost", "root", "") or die(mysql_error());
$db = mysql_select_db($db_name, $connection) or die(mysql_error());

if(isset($_POST['upload'])){

 if  (($_FILES["file"]["error"] > 0))
    {
echo "<h3> Error in File! </h3>";
    }
  else
    {
    if ((file_exists("images/" . $_FILES["file"]["name"])) )
      {
      echo "<h3> file not exsists!</h3>";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "images/" . $_FILES["file"]["name"]);

//$id=mysql_insert_id();
$time=strftime("%Y-%m-%d %H:%M:%S", time());
$img_name=$_POST['iname'];
$img=$_FILES["file"]["name"];
$sql="INSERT INTO $table_name VALUES('{$img}','{$time}','{$img_name}')";
$result=mysql_query($sql,$connection);
mysql_close($connection);
echo "<h3>uploaded successfully</h3>";
}
}
}
echo "<br><br><a href='GalleryAdmin.php'>GO back to Admin Gallery</a>
";
?> 

проблема:

при запуске всегда говорите, что файл не существует, в соответствии с этим, если

 if ((file_exists("images/" . $_FILES["file"]["name"])) )
      {
      echo "<h3> file not exsists!</h3>";

У меня есть папка images с upld.php в той же папке

в чём, по-вашему, проблема?

Ответы [ 4 ]

2 голосов
/ 08 мая 2011

ОК, поэтому вы загрузили свой файл.Но то, что вы проверили, было, скажем, "images / my.jpg".На данный момент он находится в tmp_name, в вашей директории tmp, скорее всего так, нет, он не будет существовать в данный момент, поскольку файл имеет только временное имя, вам нужно проверить его в вашем временном местоположении, переместить его ипроверить, действительно ли это в изображениях?

2 голосов
/ 08 мая 2011

Я думаю, что у вас есть небольшая логическая ошибка

file_exists("images/" . $_FILES["file"]["name"])

Вернет true, если файл существует в папке с изображениями (я думаю, я бы, если кто-то уже загрузил его).Но, исходя из вашей записи в журнале, вы хотите

!file_exists("images/" . $_FILES["file"]["name"])
1 голос
/ 08 мая 2011

Первый:

PHP загружает файл во временный каталог.Это файл, который вам нужно переместить в папку images/.Файл находится в этом месте на вашем сервере:

$_FILES['file']['tmp_name']

Это файл, для которого вы хотите запустить file_exists, чтобы убедиться, что выгрузка завершена успешно.Итак:

if (file_exists($_FILES['file']['tmp_name']) {
  // File upload successful. Now move file to your directory.
  move_uploaded_file($_FILES["file"]["tmp_name"],"images/" . $_FILES["file"]["name"]);
  // Now do the database stuff here.
  // ... 
} else {
  // Nothing was uploaded and something is wrong!
}

Secondary:

Ваш код

file_exists("images/" . $_FILES["file"]["name"])

вернет TRUE, и поэтому (в вашем коде) он скажетчто нет файла.Это логическая ошибка с вашей стороны.

Попробуйте:

!file_exists("images/" . $_FILES["file"]["name"])

вместо.

Третье:

Убедитесь, чтофайл, в который вы перемещаете файл (images /), имеет правильный chmod.Для создания файлов в него нужно 775Это делается с помощью программы ftp.

Подробнее здесь: Учебное пособие по CHMOD

Вам также необходимо переместить файл из каталога tmp в изображения, прежде чем проверять, является ли онтам с file_exists.

0 голосов
/ 08 мая 2011

Пожалуйста, используйте move_uploaded_file, прежде чем проверять, существует ли файл;)

В противном случае попробуйте это:

1.) Error_reporting (E_ALL);

2.) Chmod каталог изображений (775), щелкните правой кнопкой мыши каталог

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...