0

画像サイズ 1.5MB のアップロード中に警告が表示され、画像がデータベースに保存されませんでした。1MB 未満の画像では問題なく動作します。

これらの警告で数日間立ち往生しているため、助けてください。

これが私のコードです:

<?php

print_r($_FILES);

//connect to the database//

try {
$pdo = new PDO('mysql:host=localhost;dbname=forms1', 'root', 'root',array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
$file = $_FILES['image']['tmp_name']; 

$upload=0;

for($count = 0; $count < count($_FILES['image']); $count++)
{
if(!empty($_FILES['image']['name'][$count])){
$image_name[$count] = addslashes($_FILES['image']['name'][$count]); echo '<br \>';
$image_size[$count] = @getimagesize($_FILES['image']['tmp_name'][$count]);
$error[$count] = $_FILES['image']['error'][$count];

if($image_size[$count] == FALSE  || ($image_size[$count]) == 0)
    echo "That's not an image";

$upload++;
echo $upload;

// Temporary file name stored on the server
 $tmpName[$count]  = $_FILES['image']['tmp_name'][$count];

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

// Create the query and insert into database.

$stmt = $pdo->prepare('INSERT INTO files (name,image) VALUES (:name,:image)');
$stmt->execute(array('name' => $image_name[$count],'image' => $data[$count]));

    if(!$stmt)
    echo "Problem uploding the image. Please check your database";  
}
}
} catch (PDOException $e) {
print "Error!: " . $e->getMessage();
die();
}

?>

これらは私が得る警告です:

Warning: PDOStatement::execute(): MySQL server has gone away in C:\xampp\htdocs\testing\test.php on line 56

Warning: PDOStatement::execute(): Error reading result set's header in C:\xampp\htdocs\testing\test.php on line 56

この行への警告ポイント:

$stmt->execute(array('name' => $image_name[$count],'image' => $data[$count]));
4

2 に答える 2

5

答えはかなり単純です。

データベースにファイルを保存しません。

このようにして、一度に 1 つではなく数十の問題を解決できます。
リレーショナル データベースはバイナリ ファイルの場所ではないという理由だけで。

あなたが得ているこのエラーメッセージは警告サイン です:「あなたは巨大な不必要な負荷でサーバーに負担をかけています」. そして、ファイルを戻す必要がある場合、この負荷はさらに増加し​​ます。

ファイルシステムに保存されている間、バイナリ ファイルは誰の邪魔にもならず、最も重要なこととして、非常に高速に提供され、貴重なリソースを消費しません。

于 2013-10-25T05:23:06.077 に答える
0

画像Databaseをフォルダに保存すると、サーバーの負荷が増加します。これも良い方法ではありません。画像をフォルダに保存し、その画像のパスまたは名前を に保存する必要がありますDatabase。この場合に考慮すべき重要なことは、つまり、各画像を一意に識別する手段を提供する必要があります。そうしないと、同じ名前の画像がフォルダー内の新しい画像に置き換えられます。

于 2013-10-25T06:08:28.443 に答える