1

次のエラーが発生し続けます。

/private/var/tmp/phpl3E3lq警告:imagecreatefromjpeg(/ private / var / tmp / phpl3E3lq)[function.imagecreatefromjpeg]:ストリームを開くことができませんでした:10行目の/sites/uploadresults.phpにそのようなファイルまたはディレクトリがありません警告に失敗しました:imagedestroy()は、パラメーター1がリソースであると想定しています。ブール値は22行目の/sites/uploadresults.phpで指定されています

<?php
move_uploaded_file ($_FILES['Image']['tmp_name'], "/sites/".$_FILES['Image']['name']) or die ('Could not upload');

echo $_FILES['Image']['tmp_name']

 ?>


<?php
$img = imagecreatefromjpeg($_FILES['Image']['tmp_name'])
?>

<?php
if($img && imagefilter($img, IMG_FILTER_PIXELATE, 3))
{
echo $img;
}
else
{

echo 'Conversion failed';
imagedestroy($img);

}

?>

<img src="http://localhost/<?php echo $_FILES['Image']['name'] ?>" />

何が起こっているのかわかりません。$imgがピクセル化された形式に変換しようとしているjpegを取得していないようです。私はこれに慣れていないので、それは私の構文か何かかもしれません。

4

2 に答える 2

1

['tmp_name']イメージ作成呼び出しを実行する前に、ファイルをその場所から移動しました。そのため、そのtmp名でimagecreate()を再度呼び出すと、ファイルは存在しなくなります。

ファイルを移動する前に画像処理を行うか、ファイルの「最終的な宛先」名をimagecreate引数として使用します。

同様に:['name']ファイルアップロードのパラメータはユーザー提供のデータであり、パス情報を含めることができることに注意してください。移動呼び出しの宛先ファイル名として盲目的に使用しています。つまり、ユーザーは、Webサーバーが書き込み権限を持っているサーバー上のどこにでもファイルをダンプできます。彼らが悪意を持ってファイルに名前を付けた場合を考えてみましょう../../../../../etc/passwd

于 2011-08-04T16:29:15.550 に答える
0

移動する前の元のファイル名ではなく、新しいファイル名を使用する必要があります。

$img = imagecreatefromjpeg("/sites/".$_FILES['Image']['name']);
于 2011-08-04T16:30:19.707 に答える