質問掲示板

CGIなどのの質問を受付ます。
現在SPAM対策の為、一部ホストアドレスを規制中。

新規発言一覧最新記事過去一覧 | 検索HOME
No.233  Re:日記SPの画像アップについて 2
発言者: moon(管理人)
発言日: 2005 04/15 19:19
発言元: 61.44.103.25
 
> 最終手段として
> $imgdir = '../../homepage/diaryicon/';
> $file_dir =' ../../homepage/diaryimg/';
> とした上で画像をアップした後にlogファイルを書き換えれば
> 何とか表示されないかなぁと思っているのですが
> 最初に設定しておけば良いアイコンはともかく、
> 画像はアップの度に、となりますと手間がかかるので
> CGIの改造で何とかなるようでしたら何とかしたいのが本音です。

情熱を持って対処していただきましてありがとうございます。
そちらが特殊な状態なので、こちらではテストができませんが、
解決策を用意していただいたので、それに従うことにします。
で、どこを直せばいいのかですが、
まず、アップディレクトリは相対パス以外では多分はじかれてしまうのではと思います。
直接イメージの読み出しにも同じパスで指定してるのでだめになるのでしょう。

対処としては、記録URLにはファイルの名前だけを記録して、
書きこみ(削除)や表示のときによって、絶対パスか相対パスかを分ければいいのです。


ご承知のとおり、
$file_dir
がアップロードイメージの保存場所を指定しますね。
(ここでは$img_dirは無視します)
で、その下に
$file_dir2 = 'http://www.xxxxxxx/';
として絶対パス(アップディレクトリまで)を記述します。

rib.plの338行目辺りの
$ImgFile[$_] = "$file_dir$img_f_n" .'_' ."$_$tail[$_]";
が書きこみ命令です。
ここを
$ImgFile2[$_] = "$file_dir$img_f_n" .'_' ."$_$tail[$_]";
$ImgFile[$_] = "$img_f_n" .'_' ."$_$tail[$_]";
として、直ぐ下にある$ImgFile[$_]を$ImgFile2[$_]に変えてしまいます。
open(OUT,"> $ImgFile2[$_]") || &error("アップロード失敗");
binmode(OUT);
binmode(STDOUT);
print OUT $upfile[$_];
close(OUT);
chmod (0666,$ImgFile2[$_]);

あとは nik.cgiのなかにある$ImgFile[$_]を探して、
表示のときは
$ImgFile[$_] = $file_dir2 .$ImgFile[$_];
としてやれば表示されるはずです。
426行目辺りですか。

あと、1957行目辺りに画像を消す指定が入っています。
if (-e $_[6]) { unlink($_[6]); }
ここから下を
if (-e "$file_dir$_[6]") { unlink("$file_dir$_[6]"); }
という風にしないと画像が消えないのでここも修正したほうがいいでしょう。

多分こんな感じで大丈夫だと思いますが。
どうなんでしょう?

▼関連発言

231:日記SPの画像アップについて 1 [ささみ] 04/14
 └232:日記SPの画像アップについて 2 [ささみ] 04/14
  └233:Re:日記SPの画像アップについて 2 [moon(管] 04/15
   └236:Re[2]:日記SPの画像アップについて 2 [ささみ] 04/20
    └239:Re[3]:日記SPの画像アップについて  [moon(管] 04/21
     └240:Re[4]:日記SPの画像アップについて [ささみ] 04/28
      └241:Re[5]:日記SPの画像アップについ [moon(管] 04/29 <

Pass 保存

CGIROOM