0

元の画像をimgs/フォルダーとサーバーに正常に追加しました。しかし、サムネイルをデータベースに追加したいと思います。imgs /フォルダーに追加しましたが、データベースに挿入する方法が見つからないようです。

これは、imgをトリミングしてフォルダーに挿入するために使用されるコードの最後のビットです。

プロファイルを持っているので、$_SESSIONユーザーとUsersフレンドを呼び出すことができるようにデータベースにも挿入する必要があります。

if (isset($_POST["upload_thumbnail"]) && strlen($large_photo_exists)>0) {
    //Get the new coordinates to crop the image.
    $x1 = $_POST["x1"];
    $y1 = $_POST["y1"];
    $x2 = $_POST["x2"];
    $y2 = $_POST["y2"];
    $w = $_POST["w"];
    $h = $_POST["h"];
    //Scale the image to the thumb_width set above
    $scale = $thumb_width/$w;
    $cropped = resizeThumbnailImage($thumb_image_location, $large_image_location,$w,$h,$x1,$y1,$scale);
    //Reload the page again to view the thumbnail
    header("location:".$_SERVER["PHP_SELF"]);
    exit();
}
if(isset($_GET['a'])){
if ($_GET['a']=="delete"){
if (file_exists($large_image_location)) {
        unlink($large_image_location);
    }
    if (file_exists($thumb_image_location)) {
        unlink($thumb_image_location);

        $creator_id     =   $_SESSION['id'];
            $sql = "UPDATE users SET user_pic_small='".$img."' WHERE id=$creator_id";
            $sql2 = "INSERT INTO userphotos(photo_ownerid,photo_ispublic, photo_name, photo_caption, photo_imagedata) VALUES ($creator_id,1,'Profile Picture','Profile Picture','$img')";

            // insert the image
            if(!mysql_query($sql)) {
                echo "Fail. It broke.";
            }else{
            $c=mysql_query($sql2);

                echo "<script> parent.alert('Image Uploaded','',1000);</script>";
            }

    }
}
}

誰かが助けてくれることを願っています。ありがとう。

4

4 に答える 4

2

データベースにサムネイルのパス($ thumb_image_location)を追加する場合は、unlink()の前にパスを挿入するコードを追加するだけです。

画像全体をデータベースに保存する場合は、列をMEDIUMBLOBタイプにする必要があります。次に、unlink()の前に、画像を含むファイルのコードを読み取ります。たとえば、次のようにします。

$img = file_get_contents($thumb_image_location);

次に、$imgに保存されているデータをデータベースに挿入します。

于 2012-07-10T11:37:01.773 に答える
1

理想的には、サムネイル自体をデータベースに追加するのではなく、ファイルへの参照(ファイルパス)だけを追加する必要があります。したがって、データベースがどのように見えるかはわかりませんが、次の手順を実行する必要があります。

  1. 'thumbnail'などと呼ばれるフィールドをテーブルに作成します。これは、サムネイルファイルが保存される名前を保持します。
  2. 大きな画像を切り抜いた直後に、ファイルパスをデータベースに追加します(つまり、コード内の'$ Cropped =...'と'header( "location ....'の行の間)
  3. ユーザーまたはユーザーの友達がログインするたびに、このフィールドをチェックして、表で参照されているサムネイル画像をプルします。

そしてそれは基本的にそれです。

于 2012-07-10T11:38:05.297 に答える
0

画像のパスのみをデータベースに保存する場合は、パスのみを挿入してHTMLで提供することをお勧めします。

それ以外の場合、画像の生データをデータベースに保存する場合は、画像をbase64文字列にエンコードする必要があります。

base64でエンコードされた画像の送信/表示-base64でエンコードして画像化する方法は次のとおりです。

そして、この巨大な文字列をBlobFieldTypeのdatabseに格納します。

于 2012-07-10T11:39:39.493 に答える
0

あなたはこれを使うことができます:

// Read the file 
$fp = fopen($file, 'r');
$data = fread($fp, filesize($file));
$data = addslashes($data);
fclose($fp);

// Create the query and insert into our database.
// image is an BLOB field type
$query = "INSERT INTO tbl_images ";
$query .= "(image) VALUES ('$data')";
$results = mysql_query($query, $link);
于 2012-07-10T11:50:08.980 に答える