0

以前は画像をデータベースにアップロードすることでこれを行っていましたが、後で間違った方法を学びました。なぜなら、データベースをローカルホストからサーバーに移動する場合にデータベースをエクスポートしようとすると、画像が表示されないからです:(だから、私が持っているスクリプトここで画像を取得し、トリミングし、ランダムな名前を付けてギャラリー フォルダーにドロップしますが、何らかの理由で機能せず、理解できません..誰かが私を助けることができれば

ありがとう

if(isset($_POST['submit']) && $_FILES['galleryimg']['size'] > 0) {


$tmpname = $_FILES['galleryimg']['tmp_name'];
$imgsize = $security->secure($_FILES['galleryimg']['size']);
$imgtype = $security->secure($_FILES['galleryimg']['type']);


//crop image
$canvas = imagecreatetruecolor(219,127);
$imgattrib = getimagesize($tmpname);
$source = imagecreatefromjpeg($tmpname);
imagecopyresized($canvas,$source,0,0,0,0,219,127,$imgattrib[0],$imgattrib[1]);
$name = rand(1234,43211234).".png";



ob_start();
imagepng($canvas);
//$image = ob_get_contents();
imagepng($canvas,'/uploads/gallery/'.$name);
ob_end_clean();

}

ところで、画像がアップロードされたら、フォルダを読み取って画像を表示するにはどうすればよいですか?

4

2 に答える 2

1

まず第一に、/uploads/gallery/あなたのサーバーには本当に がありますか?

ここで、パスはスラッシュで始まることに注意してください(これは「絶対」パスです)uploads 。これは、ファイルシステムのルートにある必要があることを意味します。

ディレクトリがファイルシステムのルートにない場合uploadsは、最初のスラッシュを削除する必要があります。および/または相対パスを使用します。および/または実際のディレクトリを指す絶対パスを使用します。

多分あなたはこのようなことを意味しました:

dirname(__FILE__) . '/uploads/gallery/' . $name

dirnameて、__FILE__


画像がアップロードされたら、HTTP 経由でアクセスできるようにしますか?

はいの場合、uploads/gallery/ディレクトリはサーバー用に構成されたドキュメント ルート内にある必要があります。http://www.example.com/.../uploads/gallery/12345.pngのような URL で画像にアクセスできます。


補足として: への 2 回目の呼び出しimagepngは、画像を含むファイルを作成する必要があります。何も出力しないはずです。

それどころか、最初のものは画像を表示するはずです...しかし、ファイルを作成したいのに、なぜこれも使用しているのですか?
そして : 最初の(役に立たない ? )呼び出しを削除すると、出力バッファリング関数も削除できるようになります。(とにかく、バッファリングされた情報を使用していないようです...したがって、imagepngへの最初の呼び出しは役に立たないと思いますか?)


これがあまり役に立たない場合...これはどういう意味ですか:

しかし、何らかの理由で機能せず、理解できません..

たとえば、エラーはありますか?

あなたはこれを使いたいかもしれません:

error_reporting(E_ALL);
ini_set('display_errors', 'On');

スクリプトの最初に表示されるように、ところで:エラーメッセージが役立つ場合があります(理解できないものがある場合は、質問を編集して追加できます:役立つ場合があります)


これはおそらくあなたの問題を解決しません...
しかし、私はそれがあなたにいくつかの有用な指針を与えることを願っています...

幸運を !

于 2009-08-13T23:18:12.013 に答える
0

ob_end_cleanは、バッファリングした情報を破棄します。

http://us3.php.net/ob_end_clean

これを試して

echo ob_get_clean();
于 2009-08-13T23:12:59.903 に答える