Загрузка файла php mysql - PullRequest
0 голосов
/ 19 марта 2012

Я пытаюсь загрузить файл на сервер с помощью php, но мне нужна помощь.

У меня есть HTML-форма для отправки названия книги и изображения книги. Название книги будет сохранено в базе данных (см. Ниже), а изображение будет сохранено на сервере.

Идентификатор, название книги и дата хранятся в базе данных, однако изображение не загружается. Пожалуйста, помогите мне разобраться.

Спасибо.

База данных таблицы "Книги"

id int(11), book_name varchar(255), date_added date

add_book.php

<?php

$book_name = $_POST['book'];

// insert fields to database
$sql_query = mysql_query("INSERT INTO books (book_name, date_added) VALUES ('$book_name', now()");  


// get id for that row
$id = mysql_insert_id();

// rename the book to that id followed by the format .jpg

$new_book_name = "$id.jpg";

// define upload path
$upload_path = "../book_images/";

// move the uploaded file to the upload path with the new name
move_uploaded_file($_FILES['upload']['tmp_name'], $upload_path . $new_book_name);

?>

<form action="add_book.php" method="post" enctype="multipart/form-data" name="bookform"     id="bookform">

Book name: <input name="book" type="text" id="book" value=""/> <br />
Book image: <input type="file" name="upload" id="upload" />

<input name="submit" type="submit" value="Add book" />
</form>

Ответы [ 2 ]

0 голосов
/ 19 марта 2012

Spme здесь не так:

 $new_book_name = "$id.jpg";

Вы должны взять имя файла из POST здесь $_FILES["upload"]["name"].и добавьте $ id с этим именем файла:

$new_book_name = $id."-".$_FILES["upload"]["name"];

Также проверьте разрешение в вашем каталоге загрузки "../book_images/".

0 голосов
/ 19 марта 2012

Прежде чем любой PHP-разработчик начнет что-то отлаживать, я всегда советую в каждом вопросе ставить error_reporting(E_ALL); и ini_set("display_errors", 1); в самом верху вашего скрипта. Это скажет вам, что пошло не так, в какой строке относительно какого оператора / переменной / константы

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

 if(isset($_FILES["upload"])&&$_SERVER["REQUEST_METHOD"]=="POST")
 { 
   $name=$_FILES["upload"]["name"];

   $tempName=$_FILES["upload"]["tmp_name"];

   $size=$_FILES["upload"]["size"];

   $type=$_FILES["upload"]["type"];

   $realPath="bookName/Imagename/".$name;

   if(($type=="image/jpg"||$type=="image/jpeg"||$type=="image/png"))
   {   
      if(is_dir($fullDirectory))  //if directory exists, then simply move it
       {
        move_uploaded_file($tempName, $realPath);   
       }
       else  //if directory doesn't exist then make one and then move the file
       {
        mkdir($fullDirectory,0777,true);

        move_uploaded_file($tempName, $realPath);

       }
    }
    else
    {
     print $_FILES["upload"]["error"];
    }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...