2012-05-09 5 views
-2

私はすべての関連フィールドとメイン画像を挿入するプロパティWebサイトに完全に動作するPHPのmysqlスクリプトへのアップロードがあります。PHPのサムネイルアップロードを含む

しかし、この画像はサムネイルをxxxxxt.pngとして識別するスライドショーで使用されます。ここでは、メイン画像はxxxxx.pngです。

私のPHPコードは次のとおりです。

<?php include 'dbc.php'; page_protect(); 

if(!checkAdmin()) {header("Location: login.php"); 
exit(); 
} 

$host = $_SERVER['HTTP_HOST']; 
$host_upper = strtoupper($host); 
$login_path = @ereg_replace('admin','',dirname($_SERVER['PHP_SELF'])); 
$path = rtrim($login_path, '/\\'); 

foreach($_GET as $key => $value) { 
    $get[$key] = filter($value); 
} 

foreach($_POST as $key => $value) { 
    $post[$key] = filter($value); 
} 

$uniqid = md5(uniqid(mt_rand())); 

?> 


<?php 
if($_FILES['photo']) //check if we uploading a file 
{ 
    $target = "images/properties/"; 
    $target = $target . basename($_FILES['photo']['name']); 


    $title = mysql_real_escape_string($_POST['title']); 
    $desc = mysql_real_escape_string($_POST['desc']); 
    $extra = mysql_real_escape_string($_POST['extra']); 
    $postcode = mysql_real_escape_string($_POST['postcode']); 
    $price = mysql_real_escape_string($_POST['price']); 
    $pandp = mysql_real_escape_string($_POST['pandp']); 
    $pic = "images/properties/" .(mysql_real_escape_string($_FILES['photo']['name'])); 
if(move_uploaded_file($_FILES['photo']['tmp_name'], $target)) 
{ 
    mysql_query("INSERT INTO `furnishings` (`title`, `postcode`, `desc`, `extra`, `productcode`, `price`, `status`, `pandp`, `photo`) VALUES ('$title', '$postcode', '$desc', '$extra', '" . $uniqid . "', '$price', 'tolet.png', '$pandp', '$pic')") ;  

    echo "The property has been added to the lettings portfolio"; 
} 
else 
{ 
    echo "Error uploading new property - please ensure all the fields are correctly entered and the file is an image"; 

} 
} 
?> 

アップロードフォームのHTMLコードは次のとおりです。

<form enctype="multipart/form-data" action="addlet.php" method="POST"> 
    <table width="600px" border="2" cellpadding="5"class="myaccount"> 
    <tr> 
     <td width="135">Title: </td> 
     <td width="427"><input name="title" type="text" size="40"/></td> 
    </tr> 
    <tr> 
     <td>Description: </td> 
     <td><textarea name = "desc" rows="3" cols="40"></textarea></td> 
    </tr> 
      <tr> 
     <td>Property Features: </td> 
     <td><textarea name = "extra" rows="3" cols="40"></textarea></td> 
    </tr> 
      <tr> 
     <td>Postcode: </td> 
     <td><input name = "postcode" type="text" size="40" /></td> 
    </tr> 
    <tr> 
     <td>Price per week (&pound;): </td> 
     <td><input name = "price" type="text" size="40" /></td> 
    </tr> 
     <tr> 
     <td>Furnished/Unfurnished: </td> 
     <td><input name = "pandp" type="text" size="40" /></td> 
    </tr> 
    <tr> 
     <td>Main Image: </td> 
     <td><input type="file" name="photo" class="forms" /></td> 
    </tr> </table></p> 
<p> <input type="submit" class="CMSbutton" value="Add" /></p> 
</form> 

に2枚の画像を挿入するコードの余分な行を追加する簡単な方法があります(イメージ/プロパティ/) - イメージの元の名前とサムネイルバージョン(イメージ名の最後に "t"が付いたもの)の1つです。

どちらもかなり小さいので、サムネイルのサイズ変更については心配していません。コードはかなり完成していますが、すべてを再構築する必要はありません。

イメージファイルが正常に所定の場所に移動されている場合は非常に

おかげ JD

+0

わかりません。フルサイズの画像とサムネイルと同じ画像を使用しようとしていますか、サムネイルサイズに画像のサイズを変更していますか? –

+0

これはとても簡単です - PHPにファイルを移動する場所を示すコードを書いてください。あなたはすでに 'move_uploaded_file()'という基本的な呼び出しを持っています。ここで、PHPはその移動したファイルを**あなた**まで完全に置きます。 –

+0

2つのバージョンのイメージをサーバーにアップロードしようとしています.1つはimage.pngと呼ばれ、もう1つはimaget.pngと呼ばれています....わかりませんでしたか? – JD2011

答えて

0

に感謝すべてのヘルプ、私はこの戦略を取る:データベーステーブルの列is_uploadedis_thumb_createdis_image_createdを作成します。アップロードと移動に成功すると、最初のものを設定します。

次に、アップロードされた画像から「メイン」ビューと「サム」ビューを生成するcronまたはその他のバックグラウンドシステムを実行します(アップロードされた画像が通常の画面サイズの画像では大きすぎることに注意してください)。これらのイメージが正常に生成されると、関連する列を「完了」として設定することができ、行はこれが起こるまで非ライブのままです。

このアプローチは、高価な画像処理でWebリクエストを詰まらせることがないため、偶然にも非常にスケーラブルです。