Re: 既存CGIの改造の工夫 ( No.18 ) |
- 日時: 2015/02/21 11:31
- 名前: はるか
- こんにちわ、先だってはお世話になりました。
おかげさまでjoyfulyyを活用させて頂いていますが ひとつだけ問題があります。 出典サイト先のサポートが止まっているようなので こちらにお伺い致します。 添付可能なファイルの種類で新しい形のオフイスファイルに対応していないようです。 docとかxlsは投稿できますがdocxとかxlsxでエラーとなります. どなたか改造方法ご存知であればよろしくお願いします。
|
Re: 既存CGIの改造の工夫 ( No.19 ) |
- 日時: 2015/02/21 13:11
- 名前: りり
- j_lib_w1.cgiの515行目から
# ファイル形式を認識 $flag=0; if ($tail =~ /image\/gif/i && $gif) { $tail=".gif"; $flag=1; } if ($tail =~ /image\/jpeg/i && $jpeg) { $tail=".jpg"; $flag=1; } if ($tail =~ /image\/x-png/i && $png) { $tail=".png"; $flag=1; } if ($tail =~ /text\/plain/i && $text) { $tail=".txt"; $flag=1; } if ($tail =~ /lha/i && $lha) { $tail=".lzh"; $flag=1; } if ($tail =~ /zip/i && $zip) { $tail=".zip"; $flag=1; } if ($tail =~ /pdf/i && $pdf) { $tail=".pdf"; $flag=1; } if ($tail =~ /audio\/.*mid/i && $midi) { $tail=".mid"; $flag=1; } if ($tail =~ /msword/i && $word) { $tail=".doc"; $flag=1; } if ($tail =~ /ms-excel/i && $excel) { $tail=".xls"; $flag=1; } if ($tail =~ /ms-powerpoint/i && $ppt) { $tail=".ppt"; $flag=1; } if ($tail =~ /audio\/.*realaudio/i && $ram) { $tail=".ram"; $flag=1; } if ($tail =~ /application\/.*realmedia/i && $rm) { $tail=".rm"; $flag=1; } if ($tail =~ /video\/.*mpeg/i && $mpeg) { $tail=".mpg"; $flag=1; } # 動画 if ($tail =~ /audio\/.*mpeg/i && $mp3) { $tail=".mp3"; $flag=1; }
という記述があります。
if ($tail =~ /msword/i && $word) { $tail=".doc"; $flag=1; } の下に if ($tail =~ /msword/i && $word) { $tail=".docx"; $flag=1; } を追加
if ($tail =~ /ms-excel/i && $excel) { $tail=".xls"; $flag=1; }の下に if ($tail =~ /ms-excel/i && $excel) { $tail=".xlsx"; $flag=1; } を追加したら、何とかなりませんかね?
実際には、試していないので、案だけです。他のファイルには、拡張子について規定しているものは、見当たらないようですので、直すならここかなと思います。
 |
Re: 既存CGIの改造の工夫 ( No.20 ) |
- 日時: 2015/02/21 14:24
- 名前: june
- こんにちは
りり様の書かれているのにもう少し足します。
560行当たりにある
if ($fname =~ /\.doc$/i && $word) { $tail=".doc"; $flag=1; } #下に if ($fname =~ /\.docx$/i && $word) { $tail=".docx"; $flag=1; } #←追加(前の\.docx)も忘れずに if ($fname =~ /\.xls$/i && $excel) { $tail=".xls"; $flag=1; } #下に if ($fname =~ /\.xlsx$/i && $excel) { $tail=".xlsx"; $flag=1; } #追加(前の\.xlsx)も忘れずに
こんなんでアップは出来るようになりますが やり方が正しいのかは全く分かりません。
|
Re: 既存CGIの改造の工夫 ( No.21 ) |
- 日時: 2015/02/21 14:48
- 名前: りり
- juneさん、フォローありがとうございます。
このjoyfulyyは、ファイルがたくさんあって、設定の仕方がなかなか複雑ですね。
でも、juneさんの方法でアップできるようになるので、良いのではないでしょうか? 2行にしなくても、,などで区切って併記できる気もしたのですが、ミスが出ないよう二行にする案を出してみました。
エクセルやワードは拡張子の追加だけですが、もともと出ていないタイプのファイル種類を追加するのは、厄介そうですね。
こちらのアップローダーは、| |で区切っていくらでも拡張子の種類を増やせるので簡単なのですが。 http://todos.xsrv.jp/uploader/uploader.cgi ただし、どんなファイルでもアップできるようになるので、パスワードを設けて管理しないと危険ということでした。
|
Re: 既存CGIの改造の工夫 ( No.22 ) |
- 日時: 2015/02/21 15:40
- 名前: june
こんにちは
>このjoyfulyyは、ファイルがたくさんあって、設定の仕方がなかなか複雑ですね。 本当に多いですね、拡張子で全ファイル検索しそうになりました(笑)
>2行にしなくても、,などで区切って併記できる気もしたのですが、ミスが出ないよう二行にする案を出してみました。 私も2行が簡単そうなのでそれで試してみました。
拡張子によりアップするしないを設定できるようになっているので
mp4の場合 mp4とmpg4ファイル
if ($tail =~ /video\/mp4/i && $mp4) { if ($fname =~ /\.mpg4$/i) { $tail=".mpg4"; $flag=1; } else { $tail=".mp4"; $flag=1; } }
と、下の方 if ($fname =~ /\.mp4$/i && $mp4) { $tail=".mp4"; $flag=1; } if ($fname =~ /\.mpg4$/i && $mp4) { $tail=".mpg4"; $flag=1; }
のような書き方があるので、doc docxもそうしたらいいのかも?です でも、私の頭ではついていけません・・・・。
>エクセルやワードは拡張子の追加だけですが、もともと出ていないタイプのファイル種類を追加するのは、厄介そうですね。 この辺は全然見てないですと言うか、分かりません・・・(涙)
>ただし、どんなファイルでもアップできるようになるので、パスワードを設けて管理しないと危険ということでした。 確かに危険かも知れませんね。
|
Re: 既存CGIの改造の工夫 ( No.23 ) |
- 日時: 2015/02/21 18:41
- 名前: はるか
- りりさん、joneさんいつもありがとうございます。
ご指摘通りにしましたがまだエラーになります。どこか直す場所がありますかね。
524 if ($tail =~ /audio\/.*mid/i && $midi) { $tail=".mid"; $flag=1; } 525 if ($tail =~ /msword/i && $word) { $tail=".doc"; $flag=1; } 526 if ($tail =~ /msword/i && $word) { $tail=".docx"; $flag=1; } #追加 527 if ($tail =~ /ms-excel/i && $excel) { $tail=".xls"; $flag=1; } 528 if ($tail =~ /ms-excel/i && $excel) { $tail=".xlsx"; $flag=1; } #追加 #(中略) 564 if ($fname =~ /\.mid$/i && $midi) { $tail=".mid"; $flag=1; } 565 if ($fname =~ /\.doc$/i && $word) { $tail=".doc"; $flag=1; } 566 if ($fname =~ /\,docx$/i && $word) { $tail=".docx"; $flag=1; } #追加 567 if ($fname =~ /\.xls$/i && $excel) { $tail=".xls"; $flag=1; } 568 if ($fname =~ /\.xlsx$/i && $excel) { $tail=".xlsx"; $flag=1; } #追加 http://n-h.x0.to/S/joyful
|
Re: 既存CGIの改造の工夫 ( No.24 ) |
- 日時: 2015/02/21 18:54
- 名前: りり
- 566 if ($fname =~ /\,docx$/i && $word) { $tail=".docx"; $flag=1; } #追加
のところ、/\,docx とピリオド.ではなく、カンマ,になっています。
エクセルは、良いようですが…
|
Re: 既存CGIの改造の工夫 ( No.25 ) |
- 日時: 2015/02/21 19:13
- 名前: くりくり
- 今晩は
詳しくはしりませんが、変数がおかしくないですか?
# ファイル形式を認識 $flag=0; if ($tail =~ /image\/gif/i && $gif) { $tail=".gif"; $flag=1; } if ($tail =~ /image\/jpeg/i && $jpeg) { $tail=".jpg"; $flag=1; } if ($tail =~ /image\/x-png/i && $png) { $tail=".png"; $flag=1; } if ($tail =~ /text\/plain/i && $text) { $tail=".txt"; $flag=1; } if ($tail =~ /lha/i && $lha) { $tail=".lzh"; $flag=1; } if ($tail =~ /zip/i && $zip) { $tail=".zip"; $flag=1; } if ($tail =~ /pdf/i && $pdf) { $tail=".pdf"; $flag=1; } if ($tail =~ /audio\/.*mid/i && $midi) { $tail=".mid"; $flag=1; } if ($tail =~ /msword/i && $word) { $tail=".doc"; $flag=1; } if ($tail =~ /ms-excel/i && $excel) { $tail=".xls"; $flag=1; } if ($tail =~ /ms-powerpoint/i && $ppt) { $tail=".ppt"; $flag=1; } if ($tail =~ /audio\/.*realaudio/i && $ram) { $tail=".ram"; $flag=1; } if ($tail =~ /application\/.*realmedia/i && $rm) { $tail=".rm"; $flag=1; } if ($tail =~ /video\/.*mpeg/i && $mpeg) { $tail=".mpg"; $flag=1; } # 動画 if ($tail =~ /audio\/.*mpeg/i && $mp3) { $tail=".mp3"; $flag=1; }
をみるとそれぞれ$wordと$exelになってますし拡張子ごとに変数。 それにたいして
564 if ($fname =~ /\.mid$/i && $midi) { $tail=".mid"; $flag=1; } 565 if ($fname =~ /\.doc$/i && $word) { $tail=".doc"; $flag=1; } 566 if ($fname =~ /\,docx$/i && $word) { $tail=".docx"; $flag=1; } #追加 567 if ($fname =~ /\.xls$/i && $excel) { $tail=".xls"; $flag=1; } 568 if ($fname =~ /\.xlsx$/i && $excel) { $tail=".xlsx"; $flag=1; } #追加
$wordを二つ使って変数。 この場合は $docx) { $tail=".docx" $xlsx) { $tail=".xlsx";
と変数名をかえてみたらいかがですかね? 間違っていたらごめんなさい。
 |
Re: 既存CGIの改造の工夫 ( No.26 ) |
- 日時: 2015/02/21 19:39
- 名前: はるか
- りりさん、くりくりさん
素早い対応恐れ入ります。 早速CGIのカンマを修正して、変数に1を追加して掲示板でテストしました。 成功です、ワードファイルを添付できました。ありがとうございます。
お話は変わりますがりりさんのアップローダーに、飫肥城しぐれという曲がありますが 飫肥は私の故郷で本当に懐かしく感じました。そんな曲が存在することも知らず三回ぐらい聞きました。 えび路しぐれも他人事とも思えません\ /.
|
Re: 既存CGIの改造の工夫 ( No.27 ) |
- 日時: 2015/02/22 19:28
- 名前: りり
- はるかさん、無事解決して何よりでした。
くりくりさん、このjoyfulyyは、他のCGIファイルとの関係も有り、ここの部分の変数だけ操作することは、できない感じがしました。
またdocでもdocxでも起動時に開くのはword、xlsでもxlsxでも、excelで開くということで、拡張子と起動アプリケーションの関係づけの問題のように思いました。
厳密に言えば、古いバージョンのword、exelでは、docx、xlsxは開かないことがあるので、本当は処理が必要かと思いますが。
また、 >xlsxやdocxの実態はzip圧縮されたxmlファイルなので、ApacheなどのWebサーバーの設定によっては、ダウンロードしたファイルの拡張子が.zipになってしまう http://answers.microsoft.com/ja-jp/windows/forum/windows_7-files/%E3%82%A8%E3%82%AF%E3%82%BB%E3%83%AB%E3%82%92/8478e13a-a265-42cb-9b1f-dcef4389de7f ということもありますね。
Apacheの設定になると、くりくりさんのお詳しいところですね。
私も、うちのバージョンでは、docx、xlsxが開くのに、「えっ?!」と思ったことがあります。excelの無料テンプレートをダウンロードしたときでした。Webサーバーの設定によるんですね。
|