1

アップロードが配置されるパスを変更しようとしています。「uploads」というルートのディレクトリにアップロードしたいのですが

URL パスを正常に変更しました

'upload_url' => 'http://www.mydomain.co.uk/uploads/',

しかし、ディレクトリのアップロード パスを変更しようとすると、コードが機能せず、内部サーバー エラー メッセージが表示されます。ログに関連するものが見つからないようです。

'upload_dir' => '../../uploads/',

これは元のコードです

'upload_dir' => dirname($_SERVER['SCRIPT_FILENAME']).'/files/',
'upload_url' => $this->getFullUrl().'/files/',

スクリプトへのパスは $_SERVER['ROOT']/server/php/index.php で、元のファイル ディレクトリは /server/php ディレクトリ内にありました。だから私は2つの深さに戻ろうとしています。

奇妙なことは、これが機能することです:

'large' => array(
'upload_dir' => '../../uploads/',
'upload_url' => 'http://www.mydomain.co.uk/uploads/',
'max_width' => 1920,
'max_height' => 1200,
'jpeg_quality' => 95
),
'thumbnail' => array(
'upload_dir' => '../../thumbs1/',
'upload_url' => 'http://www.mydomain.co.uk/thumbs1/',
'max_width' => 80,
'max_height' => 80
)

しかし、メインオプションに同じことをするとすぐに、それはバラバラになります。私は途方に暮れています!

4

3 に答える 3

0

修正しました。これが最善の方法かどうかはわかりませんが、機能します。

この保護された関数get_file_objects()関数を捨てました

それはディレクトリをスキャンしていて、大規模なフォルダがある場合はメモリの観点からはクールではなかったためです。

次に、「ファイル名のトリム」関数の先頭にランダムな一意の番号をいくつか追加しました

protected function trim_file_name($name, $type, $index) {
$realname = $name; 
 $realname = strtolower($realname);mt_srand((double)microtime()*3000000);
 $randvar =  mt_rand(3,30000000);
 settype($randvar,"string"); $file_name = trim(basename(stripslashes($randvar.$name)), ".\x00..\x20");

これで、ディレクトリを検索せずに一意のファイル名を使用できます

于 2012-08-05T14:08:28.127 に答える
0

その答えは、パスが機能していなかったということではありません。ディレクトリのサイズと関係があります。何千もの画像がある非常に大きいためです。そのため、スクリプトは巨大な画像ディレクトリでバラバラになっているようです。これを回避する必要があります:(おそらく、スクリプトを取得して、ディレクトリを検索するのではなく、競合するファイル名についてデータベースをチェックします。これが問題だと思います。

于 2012-08-05T13:16:20.007 に答える
0

ここに同様の質問があります。投稿のコメントには、これらのオプションは../folder.

于 2012-08-05T01:22:00.720 に答える