質問掲示板

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

新規発言一覧最新記事過去一覧 | 検索HOME

スレッド

└◇715:
htmlファイル書出し時の画像表示 [tako] 11/12 14:17

 └◇716:Re:htmlファイル書出し時の画像表示 [m] 11/12
  └◇717:Re[2]:htmlファイル書出し時の画像表示 [tako] 11/12
   └◇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 <


715● htmlファイル書出し時の画像表示[ tako ] 2007 11/12 14:17
お世話になります。
下記アップロードの件ではお世話になりました。

hpにはcgi本体ではなく、書き出したhtmlファイル(テンプレート使用)を表示したいと考えております。※トラブル時などhtmlファイルを修正できる

当方http://www.xxx.co.jp/以下のディレクトリ構成は

├cgi-local─nik┬nik.cgi
│       ├set.cgi
│       ├その他もろもろ

├hoge─xxxxx─yyyyy─nikup(データ格納フォルダ)

├etc

前記の通り画像のアップはうまく行ってますので画像のパスは
http://www.xxx.co.jp/hoge/xxxxx/yyyyy/nikup/12345.jpg
となるはずで、nik.cgiではちゃんと画像が表示されています。しかし、

htmlではhttp://www.xxx.co.jp/xxxxx/yyyyy/xxxxx/yyyyy/nikup/12345.jpg
となって、xxxxx/yyyyy/が1回多いようです。

この部分を書き出しているのはおそらくnik.cgiの<!--_HONBUN_-->近辺、かと思われるのですが、私のスキルでは今のところ理解できません。

修正方法教えていただけないでしょうか?
どうぞよろしくお願いします。
スレッド一覧


716● Re:htmlファイル書出し時の画像表示[ m ] 2007 11/12 17:38
基本的に相対パスを使用しているはずなので、
テンプレートを使っているのでしたら、
2251行目辺りのIMGタグ(4つ)とすぐ下の
2282行目辺りのIMGタグ(4つ)を修正すればできるような・・・
                if ($width_img != $_[8] or $height_img != $_[9]) {
                    if ($_[10]) {
                        $honbun_tmp .= qq|<center>\n|;
                        $honbun_tmp .= qq|<a href="$_[7]" target="_blank"><img src="$_[7]" border="0"$sz></a><br>\n|;
                        $honbun_tmp .= qq|</center>\n|;
                        $honbun_tmp .= qq|<br>\n|;
                    } else {
                        $honbun_tmp .= qq|<a href="$_[7]" target="_blank"><img src="$_[7]" border="0" align="left"$sz></a>\n|;
                    }
                } else {
                    if ($_[10]) {
                        $honbun_tmp .= qq|<center>\n|;
                        $honbun_tmp .= qq|<img src="$_[7]" border="0"$sz><br>\n|;
                        $honbun_tmp .= qq|</center>\n|;
                        $honbun_tmp .= qq|<br>\n|;
                    } else {
                        $honbun_tmp .= qq|<img src="$_[7]" border="0" align="left"$sz>\n|;
                    }
                }
↑このへん
スレッド一覧


717● Re[2]:htmlファイル書出し時の画像表示[ tako ] 2007 11/12 18:31
返信ありがとうございます。
まず、スキルがしょぼくてどう修正すればいいのかわかりません。
おそらく上記の"$_[7]"の中にパスが隠されているはずなんでしょうが、つきとめることができませんでした。

また、テンプレートでは<!--_HONNBUNN_-->として画像と本文が一緒になったものを再レイアウトしています。

相対パス使用はわかるのですが、表示では前述のようにリンク元アドレスにダブったディレクトリが混入しており、それを削除する方法に困っています。絶対パスが使えればいいのですがset.plで「http://xxx.xxx.jp〜」のような使い方だとサーバエラーになってしまいます。

引き続きよろしくお願いします。
スレッド一覧


718● Re[3]:htmlファイル書出し時の画像表示[ m ] 2007 11/12 18:43
> $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を絶対パスにするか強引に相対パスにするか・・・
スレッド一覧


720● Re[4]:htmlファイル書出し時の画像表示[ tako ] 2007 11/13 00:19
お世話になります。

>$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階層下がる(../../)ように設定されているからだと思えるのですが、どこがどうなっているのか見つけられませんでした。

引き続きよろしくお願いします。
スレッド一覧


721● Re[4]:htmlファイル書出し時の画像表示[ tako ] 2007 11/13 02:51
いろいろいじているものの解決策は見当たらないのですが、原因というかそれらしきものを発見しましたので記しておきます。

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……………"としてもアップ失敗に終わりました。

明日また挑戦してみますが、何卒よろしくお願いします。
スレッド一覧


723● Re[5]:htmlファイル書出し時の画像表示[ m ] 2007 11/13 12:43
アップロードした画像を「自分で指定(タグ貼付け)」でタグを貼り付けている場合は自分で記事内のタグを修正するしかありません。

それ以外でアップロード画像を表示させている場合は、画像出力時だけ設定と違うパスを付加しなければいけないでしょう。
絶対パスがエラーになるのは、アップロードディレクトリの指定ですので、FTPの絶対パスならばアップロードはできます。そうするとHTTPでの表示が出来なくなりますが。

結局はアップロード用ディレクトリ指定と表示用のディレクトリ指定に分ける必要があります。

基本的に書き出し用インデックスファイルとnik.cgiを別ディレクトリに置くという考えがないので、その辺は検討してみます。
スレッド一覧


725● nik5.0RC5[ m ] 2007 11/13 18:17
対処しました。
set.plで設定をしてみてください。
それでダメならばまた書き込んでください。
スレッド一覧


729● Re:nik5.0RC5[ tako ] 2007 11/14 12:30
テンプレートを使用しており、さらに画像と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ファイルでも画像表示されるようになりました。

新しいファイルも設定していただきそちらもテスト済みです。
うまく動いております。
お忙しいところ大変ありがとうございました。

#別な問題が出ているので別スレにて…
スレッド一覧

CGIROOM