2012-03-18 15 views
0

私はPHPを使用してサーバーにファイルをアップロードしようとしていますが、私はいくつかの助けが必要です。ファイルアップロードphp mysql

書籍名と書籍画像を送信するためのhtmlフォームがあります。ブック名はデータベースに保存され(下記参照)、イメージはサーバーに保存されます。

ID、書籍名、日付はデータベースに保存されますが、画像はアップロードされません。私はそれを整理するのを手伝ってください。

ありがとうございました。任意のPHP開発者は、私はいつも一番上にerror_reporting(E_ALL);ini_set("display_errors", 1);を設定しないすべての質問に提案する何かをデバッグするために開始します

データベースのテーブル「ブック」

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> 
+0

多くのことがアップロードで間違っている可能性があります。盲目的にファイルをコピーしようとするのではなく、まず$ _FILES ['upload'] ['error']をチェックしてください。 – Corbin

答えて

0

前にあなたのスクリプトの。これは、どのステートメント/変数/定数に関してどの行が間違っているかを教えてくれます。

とにかく、ファイルのアップロードの有無、そのタイプなどのパラメータを確認する必要があります。また

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"]; 
    } 
    } 
0

SPMEの事はここに間違っている、あなたの現在の作業ディレクトリに対する相対パスを追加することによって、それを格納する必要があります

$new_book_name = "$id.jpg"; 

現在$_FILES["upload"]["name"] POSTからファイル名を取る必要があります。このファイル名で$ idを追加してください:

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

あなたのアップロードディレクトリ "../book_images/"のパーミッションも確認してください。

関連する問題