- ベストアンサー
「警告:ページの有効期限切れ」となるのを回避するには?
ブラウザからファイルのアップロードを行うCGIを作ったのですが、 「警告:ページの有効期限切れ」と表示されます。 どうも<input type=file>でファイルを送信している場合に有効期限切れになるようです。 宜しくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
おおさっぱ過ぎて回答が出来ません。 どのような場合に「有効期限切れ」と出るのかがわかりません。 CGIの該当部分のソースを開示できませんか?
その他の回答 (2)
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
回答No.3
キャッシュコントロールじゃないですか? Expiresを数時間後に設定してみてはいかがでしょうか。
質問者
お礼
お返事有難う御座います。 何とか解決しました
- hrm_mmm
- ベストアンサー率63% (292/459)
回答No.2
アップロードして、直ぐの表示で「有効期限切れ」などと出ることはあり得ないと思うのだけど? どのブラウザを使って、どこにその表示が出ますか? 履歴から再度アップロード完了ページを表示させようとすれば、出るのは当たり前とか思うのですけどね。でなければ、データ送信が再度実行されてしまうので。
質問者
お礼
お返事ありがとうございます、なんとか解決しました。
補足
失礼しました、 HTMLファイルは <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <TITLE>アップロード</TITLE> </HEAD> <BODY> <FORM method="POST" action="mitumori.cgi" enctype="multipart/form-data"> <input type="file" name="upfile" size="55"> <INPUT type="submit" value="送信する"> </FORM> </BODY> </HTML> CGIファイルは #!/usr/local/bin/perl require './cgi-lib.pl'; #フォームからのデータを受け取る &ReadParse; #ファイル名を指定する $fnme = 'sample'; #拡張子部分を取出す為にデータの間処理を続ける foreach $tmp (@in) { # 受信データの Content-type 部分から拡張子を探す if ($tmp =~ /(.*)Content-type:(.*)/i) { if ($2 =~ /image\/jpeg/i) { $ext = '.jpg'; } elsif ($2 =~ /image\/pjpeg/i) {$ext= '.jpg'; } elsif ($2 =~ /image\/gif/i) { $ext = '.gif'; } elsif ($2 =~ /image\/png/i) { $ext = '.png'; } else { $ext = 'NO'; } } # 受信データの filename= 部分から拡張子を探す elsif ($tmp =~ /(.*)filename=(.*)/i) { if ($2 =~ /\.jpg/i) { $ext = '.jpg'; } elsif ($2 =~ /\.gif/i) { $ext = '.gif'; } elsif ($2 =~ /\.png/i) { $ext = '.png'; } else { $ext = 'NO'; } } } #jpg gif png 以外ならエラーを出力する if (($ext eq 'NO')) { $mes = '許可されていないファイル形式です。'; } #許可されている拡張子なら書き込み処理をする else { #ファイル名と拡張子を結合する $fnme = $fnme . $ext; # 受信データを書き込む open OUT,">$fnme"; binmode OUT; print OUT $in{'upfile'}; close OUT; $mes = '書き込みが完了しました。'; } #完了メッセージ print <<"HTML"; Content-type: text/html <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </HEAD> <BODY> $mes </BODY> </HTML> HTML exit; となっています、宜しくお願い致します。