CGIなどのの質問を受付ます。
現在SPAM対策の為、一部ホストアドレスを規制中。
▼スレッド
│
└◇717:Re[2]:htmlファイル書出し時の画像表示 [tako] 11/12 18:31
└◇718:Re[3]:htmlファイル書出し時の画像表示 [m] 11/12
├◇720:Re[4]:htmlファイル書出し時の画像表示 [tako] 11/13
└◇721:Re[4]:htmlファイル書出し時の画像表示 [tako] 11/13
├◇723:Re[5]:htmlファイル書出し時の画像表示 [m] 11/13
└◇725:nik5.0RC5 [m] 11/13
└◇729:Re:nik5.0RC5 [tako] 11/14 <
返信ありがとうございます。スレッド一覧
まず、スキルがしょぼくてどう修正すればいいのかわかりません。
おそらく上記の"$_[7]"の中にパスが隠されているはずなんでしょうが、つきとめることができませんでした。
また、テンプレートでは<!--_HONNBUNN_-->として画像と本文が一緒になったものを再レイアウトしています。
相対パス使用はわかるのですが、表示では前述のようにリンク元アドレスにダブったディレクトリが混入しており、それを削除する方法に困っています。絶対パスが使えればいいのですがset.plで「http://xxx.xxx.jp〜」のような使い方だとサーバエラーになってしまいます。
引き続きよろしくお願いします。
> $honbun_tmp .= qq|<a href="$_[7]" target="_blank"><img src="$_[7]" border="0" align="left"$sz></a>\n|;スレッド一覧
これを
$honbun_tmp .= qq|<a href="../../$_[7]" target="_blank"><img src="../../$_[7]" border="0" align="left"$sz></a>\n|;
としたらだめでしょうか?結構強引ですが。
ソースを見て、httpから始まっている場合は何かを対処しないとダメです。
> また、テンプレートでは<!--_HONNBUNN_-->として画像と本文が一緒になったものを再レイアウトしています。
ということは、「自分で指定(タグ貼付け)」でタグを貼り付けているんでしょうか?
その場合は、タグのURLを絶対パスにするか強引に相対パスにするか・・・
お世話になります。スレッド一覧
>$honbun_tmp .= qq|<a href="../../$_[7]" target="_blank"><img
>src="../../$_[7]" border="0" align="left"$sz></a>\n|;
>としたらだめでしょうか?結構強引ですが。
明日試してみますが、既に$_[7]の中には必要より多いパスが含まれているので、上記ではダメなような気がしますが・・・
テンプレートは自作しました。必要なのは「見出し」「時間」「本文」だけですので、それらを簡単にレイアウトできましたので。
>その場合は、タグのURLを絶対パスにするか強引に相対パスにするか・・・
画像の絶対パス指定ということでしょうか?
編集作業はCGIで、書き出しはHTMLでが理想でしたので最悪完成したHTMLファイルをいじりなおす(画像データのタグ貼り直し)しかないのかな?とは思っていますが、CGI側で全て処理できれば言うことないのですが…
うーん、nik.cgi中のどこかで最終的にhtmlに書き出される「画像」のパスを設定しているところがあり、結果、http://www.xxx.co.jp/xxxxx/yyyyy/xxxxx/yyyyy/nikup/12345.jpgのように/xxxxx/yyyyy/部分が重複してしまっているのは、おそらくset.plで指定しているアップロード先ディレクトリからさらに2階層下がる(../../)ように設定されているからだと思えるのですが、どこがどうなっているのか見つけられませんでした。
引き続きよろしくお願いします。
いろいろいじているものの解決策は見当たらないのですが、原因というかそれらしきものを発見しましたので記しておきます。スレッド一覧
rib.plの357行目 UpFile式内の#添付データ書き出しで、
$ImgFile2[$_] = "$file_dir$img_f_n……………"とありますが、$file_dirはset.plで指定したnik.cgiからの相対パスで「../../xxxxx/yyyyy/nikup/」としています。
#添付データ書き出しの処理はnik.cgiと同じディレクトリからされていますから、nik.cgi表示上の画像のパスは上記のままで問題ありません。しかし書き出したhtmlファイルは先ほどのディレクトリ内に書き出されるようにしてあるため、この相対パスはこのファイルからではおかしな表示になるのは当然です。
ちなみに前述の"$file_dir$img_f_n……………"から$file_dirをはずして同処理を行いますと、例えば<img src="12345_1.jpg">のように画像のパスがなくなって書き出されますがnik.cgiと同じディレクトリに画像ファイルがアップされてしまうのでこれではいけません。
以上のことから画像のアップ先が別ディレクトリの場合はnik.cgiとhtml書き出し時には処理を分岐させなければならないような感じがするのですが、いかがでしょうか…
もしくわhttp://からはじまる絶対パスが書ければどちらの場合にも対応できるのですが、強引に"http://www.xxx.xx.jp/xxxxx/yyyyy/nikup/$img_f_n……………"としてもアップ失敗に終わりました。
明日また挑戦してみますが、何卒よろしくお願いします。
アップロードした画像を「自分で指定(タグ貼付け)」でタグを貼り付けている場合は自分で記事内のタグを修正するしかありません。スレッド一覧
それ以外でアップロード画像を表示させている場合は、画像出力時だけ設定と違うパスを付加しなければいけないでしょう。
絶対パスがエラーになるのは、アップロードディレクトリの指定ですので、FTPの絶対パスならばアップロードはできます。そうするとHTTPでの表示が出来なくなりますが。
結局はアップロード用ディレクトリ指定と表示用のディレクトリ指定に分ける必要があります。
基本的に書き出し用インデックスファイルとnik.cgiを別ディレクトリに置くという考えがないので、その辺は検討してみます。
対処しました。スレッド一覧
set.plで設定をしてみてください。
それでダメならばまた書き込んでください。
テンプレートを使用しており、さらに画像とhtmlファイルは同ディレクトリ内にあるので、nik.cgiの4575行目辺りのhtml書き出しの部分で…スレッド一覧
# テンプレートを使う場合はここを使用しますよ
if ($log_html and -e $log_html) {
$aaa = "../../hoge/xxxxx/yyyyy/nikup/";
$m_sw = 0;
$test .= &logvw_tmp(@_);
$test =~ s/$aaa//g;
のように強引に相対パスをはずしてみたところ、htmlファイルでも画像表示されるようになりました。
新しいファイルも設定していただきそちらもテスト済みです。
うまく動いております。
お忙しいところ大変ありがとうございました。
#別な問題が出ているので別スレにて…