• ベストアンサー

statの戻り値が返ってこない

kumozの回答

  • ベストアンサー
  • kumoz
  • ベストアンサー率64% (120/185)
回答No.5

> どういうプログラムを組めばクライアントPCでリストを作成し、サーバに送れるのでしょうか。 > 何か参考になるURLなどご存じないでしょうか。 適当な URL は知らないのですが、次のようになるかと思います。 1)手作業でリストファイルを作成するのも1方法です。エディタで作成する、dir (DOS 系)  または ls (Unix 系) の出力を編集する、といった方法があります。また、Perl はこの  分野も得意ですので、プログラムで自動化することもできます。 2)リストファイルをサーバーに送るのは、CGI ファイルを送ったのと同じ方法が使えるで  しょう。その際、リストファイルの文字コードをサーバーの文字コードと合わせておき  ます。リストファイルが ASCII コードのみで、FTP のアスキーモードで転送する場合は、  (たぶん) FTP が改行文字を変換してくれるので大丈夫でしょう。 3)CGI をリストファイルを見ながら処理を進めるように修正する。 なお、容量制限には対応できませんが、振り分けだけならばいったんサーバーに受け取って、 その後振り分けるという処理が、CGI でできます。こっちの方が、簡単かもしれません。 どのみち容量オーバーのファイルは、そのままでは送ることができないので、除外しておけ ばよいと思います。

choei
質問者

お礼

ありがとうございました。 ちょっと時間がかかりそうですが何とかやってみます。 ありがとうございました

関連するQ&A

  • 【ruby】特異クラスを使って,File.statをカスタムしたい

    File.statに、nameというメソッドを追加したいです。 st=File.stat('hoge.txt') puts st.name #=> hoge.txt 上記のように使いたいのです。 そこで、以下の様に書いてみました。(行頭のスペースは全角です) class File  class << self   def stat(file)    st=File::Stat.new(file)    class << st     def name      @file     end    end    st   end end end st=File.stat('./hoge.txt') puts st.name #=> nil 上記実行結果はnilが出力され、期待した結果は得られませんでした。 上記の様に書いた理由を以下に記します。 クラスメソッドstatは、file.rbのclass Fileの中に定義されていて、 stat.rbのFile::Stat.new(file)を戻り値としていました。 stat.rbのclass File::Statのinitializeでは、 def initialize(file)  @file = file  (略) end となっていたので、上記の様に書いてみたのですが、何が悪いのでしょうか? ご指導のほど、宜しくお願いいたします。

    • ベストアンサー
    • Ruby
  • CGIのファイルアップローダーでサイズ制限

    ファイルアップローダーで下記のCGIを書きましたが、0バイトのファイルだけはどうしても通ってしまいます。どうすればいいでしょうか? ちなみに1バイトでもあればエラーを表示してくれます。 $file_size ++; if($file_size > 1000000){ exitError("ファイルサイズが大きすぎます。1MB以下 にしてください"); } $file_size ++; if($file_size < 500){ exitError("ファイルサイズが小さすぎます。500バイト以上にして下さい。"); } $file_size ++; if($file_size == 0){ exitError("0バイトのファイルです"); } } はじめは <500 だけでもいけると思ったんですが、ダメだったんで ==0 も加えたんですが、やはりダメでした。

    • ベストアンサー
    • CGI
  • stat failed

    ディレクトリ上にあるファイルの情報を取得し表示しようとするのですが、以下のようなエラーメッセージが出てfilesize()やfilemtime()が上手く動きません。 Warning: filesize() [function.filesize]: stat failed for 1_1-2.c in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\uploaded.php on line 14 Warning: fileatime() [function.fileatime]: stat failed for 1_1-2.c in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\uploaded.php on line 15 Warning: filemtime() [function.filemtime]: stat failed for 1_1-2.c in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\uploaded.php on line 16 ファイルがphpファイルの時は何故かエラーメッセージは出ず、ちゃんと動いているようです。 調べてみたら容量2GB以上のファイルの情報を取得しようとするとこうなる場合があるとのことですが、どのファイルも100バイト程度のものです。 以下コードです。 <table border = "1"> <tr> <th>ファイル名</th><th>サイズ</th><th>最終アクセス日</th><th>最終更新日</th> </tr> <?php clearstatcache(); $dir = opendir('./files'); while($file = readdir($dir)) { if($file != '..' && $file != '.') { print('<tr>'); print('<td><a href = "files/'.$file.'">'.$file.'</a></td>'); print('<td>'.filesize($file).'バイト</td>'); print('<td>'.date('Y/m/d H:i:s', fileatime($file)).'</td>'); print('<td>'.date('Y/m/d H:i:s', filemtime($file)).'</td>'); print('</tr>'); } } closedir($dir); ?> </table> 環境はPHP5.3.2, Apache2.2です。ご教授お願いします。m(__)m

    • ベストアンサー
    • PHP
  • サーバーについてとパーミッションについての質問

    こんにちは。 私のサーバーではパーミッションの777はセキュリティのため使えず、755にしてくれと書いてあります。 しかし、フリーのCGIスクリプトを設置しようと思うと777で設定してくれと書いてあります。これを755の設定にしたらどのような影響があるのでしょうか? あとサーバーの容量が決まっているのですが、サーバー側にアップしているファイル、掲示板のログ等のサイズをまとめて知る方法はありませんか? 教えてください。よろしくお願いします。

  • アップローダーの容量

    こんにちは。 最近CGIのアップローダーが設置できるようになって、 かなり気に入って使っていたのですが、いきなりアップできなくなってしまいました。 今までアップしたファイルを少し削除したら、また新しいのがアップできたところをみると、 サーバかなんかの容量がいっぱいなのかな???と思ったのですが・・・ でも私が登録?してるホームページサーバは容量無制限なはずなので なんで容量がいっぱいになってしまったのかわかりません。 ちなみに私が設置したのはずるぼんサンのアップローダーです。 設定で ファイルサイズ制限…2MB     保存件数…100件     にしています。 今アップしてある量?…約70MB        数…65コ      です。 わかる方教えてください。

  • サーバカレント配下サブフォルダ内にファイルをアップさせたいのですが…

    ブラウザからローカルのファイルを指定して、実行ボタンを押すとサーバに、指定したファイルがアップされるプログラムを作成中です。 『copy($file, $file_name);』で、サーバにアップされるところまでは出来たのですが、このソース(.php)が存在するカレントに、ファイルがアップされてしまいます。 カレント配下に作成してあるサブフォルダ内にアップさせるには、どうすれば良いでしょうか? (もしくは、カレントにアップされたファイルを配下サブフォルダに移動でも良いですが) <以下PHPソースの抜粋> ~~~~~~~~~~~8<~~~~~~~~~~~~8<~~~~~~~~~~~ <TD nowrap><FONT size="-1">ファイル file</FONT></TD> <TD nowrap> <INPUT TYPE="hidden" NAME="MAX_FILE_SIZE" SIZE="65536"> <INPUT TYPE="file" NAME="file" SIZE="42"> </TD> ~~~~~~~~~~~8<~~~~~~~~~~~~8<~~~~~~~~~~~ <TD nowrap><INPUT id=submit1 NAME=submit1 type=submit value=" 実 行 "></TD> ~~~~~~~~~~~8<~~~~~~~~~~~~8<~~~~~~~~~~~ if ($file_name != '' && $file_size != 0) { copy($file, $file_name); } ~~~~~~~~~~~8<~~~~~~~~~~~~8<~~~~~~~~~~~

    • ベストアンサー
    • PHP
  • アップロードするとファイルサイズが大きくなる

    ホームページにファイルをアップロードすると、PCで確認したサイズより大きくなります。 結果、借りている容量を超えてしまい途中でアップできなくなります。 例えば、プロバイダーに90Mbを借りているところへエクスプローラのプロパティで  サイズが77.5Mbディスク上のサイズが103Mbのフォルダー内の物を サーバーにアップすると  サイズが77.5Mbでは上がらず、59Mbにまでサイズダウンして何とか上がります。  (ディスク上のサイズはファイルシステムの関係もあり無視します) 77.5Mbの物がアップすると90Mbを超える・・・、借りている容量も少ないので何とかしたい ・アップしてもサイズが増えない様にできないだろうか ・写真等はjpg、gifしかサーバー側が対応していないようですが、他に方法はないのだろうか 何かうまい方法があればアドバイスをお願いします  

  • PC・携帯等のアクセス時の自動振り分けについて

    現在自身でホームページを所有・管理しているのですが、index.cgiにより振り分け設定をしています(厳密に言えば、2年くらい前に人にしてもらいました)。 ところが、PC・Docomo・auに関してはそれぞれのページに振り分けられるのですがsoftbankだけはPCのページに振り分けされてしまいます。 ちなみに当方のサーバー上にあるindex.cgiに書かれてる構文は以下の通りです。 #!/usr/bin/perl $ua = $ENV{'HTTP_USER_AGENT'}; if(index($ua, "DoCoMo")>=0) { print "Location: http://www.00000.com/i/index.htm\n\n"; } elsif(index($ua, "J-SKYWEB")>=0) { print "Location: http://www.00000.com/j/index.htm\n\n"; } elsif(index($ua, "KDDI")>=0) { print "Location: http://www.00000.com/ez/index.htm\n\n"; } else { print "Location: http://www.00000.com/index.html\n\n"; } exit; 図々しいお話かもしれませんが、この構文をご訂正して頂ける方もしくは素人向けのよきアドバイスを頂ける方よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • カウンター設置うまくいかず

    http://www.tohoho-web.com/soft/wcnt.htm#Trouble このカウンター使ってますが、上手く行きません。 cgiは動きます。 cnt dat acc ががそれぞれ存在しませんというエラーが出ます。 パーミッションは間違っておらず、サーバーにもアップしてます。 ファイル名も間違ってません。 原因は何でしょう? cgiのファイルに、 $file_count = "http://www.ほにゃらら/count/$count_name" . ".cnt"; と記述してます。 本来は、$file_count = "$count_name" . ".cnt"; となっていたものを、別のサーバーにファイルを置いたため、このような記述にしてみました。 これ、間違ってますか? こういう書き方はいけないのでしょうか? アドバイス、よろしくお願いいたします。

  • HTML上(javascript)からCGIを実行する方法

    javascriptから外部実行ファイル(javascriptファイルではなくperlなどのCGI) を実行する方法を探しています。 下記のようにindex.htmとtest.cgiファイルを用意して、index.htm内の javascriptから外部cgiを実行させ、cgiの結果(test.cgiでは単に 『test』と表示するのみ)を表示したいと考えています。 利用増ですが、cgiやssiが使用できないサーバにindex.htmを置いて、 cgiが使用できるサーバ上のcgi結果を取得したいものです。 通常のcgiのように、1ページでcgi結果を表示するものではなく、 HTMLファイルの一部にcgi処理結果を表示させたいものです。 そもそも、SSIを使用しなければ下記のようなHTML内にcgiなどの 実行結果を表示する事は出来ないのでしょうか。 よろしくお願い致します。 ※下例のプログラムではcgi結果は表示されませんでした・・・。 ---<index.htm>---------------------------------------- <HTML> <BODY> <SCRIPT language="Javascript" src="http://xxx.xxx.xxx.xxx/test.cgi"></SCRIPT> </BODY> </HTML> ---<test.cgi>---------------------------------------- #!/usr/bin/perl print "test"