アップロードフォームからPerl CGI(CGI.pmを使用)スクリプトに渡されるファイル名は、クライアントマシンによって異なり、クライアント依存のパス区切り文字を含む場合があります。渡されたパラメータを解析してファイル名(通常は最後のパス区切り文字に続く最後のサブ文字列)を判別する信頼できる方法がありますか?Perl CGIスクリプトでアップロードされたファイル名を確実に判別する方法はありますか?
2
A
答えて
4
クライアントがMSIE(Windowsパスを意味します)を使用しているときに、パス区切り文字で問題が発生したことがあります。私はそれを処理するためにかなり単純な正規表現を使用しました。ただし、最も一般的なパス区切り文字( '/'、 '\'、および時には ':')を処理するために正規表現を拡張することもできます。
また、(おそらくHTTP::DetectUserAgentまたはHTTP::BrowserDetectを使用して)ユーザエージェント文字列からファイルシステムの種類を調べることができます。 File :: BaseNameのfileparse_set_fstype関数を呼び出して、ファイルを解析することができたとします。
のような何か:
use File::Basename;
use HTTP::BrowserDetect;
# ... get the filename into $upload_file and agent into $user_agent_string.
my $browser = HTTP::BrowserDetect->new($user_agent_string);
my $ostype;
$ostype = 'MSWin32' if $browser->windows;
$ostype = 'Unix' if $browser->unix;
# There are more tests available.
fileparse_set_fstype($ostype);
my $filename = basename($upload_file);
関連する問題
- 1. Javascript/jqueryからperl cgiスクリプトにファイルをアップロードする
- 2. perl cgiアップロードされたファイルを解凍する
- 3. WordpressのインストールでPerl(またはCGIスクリプト)を実行する方法
- 4. PerlスクリプトがCGIコンテキストで実行されているかどうかを確認する方法はありますか?
- 5. cgi/perlスクリプトが実行されないようにする
- 6. CGIスクリプトでFTP経由でファイルをアップロードするには?
- 7. SQLスクリプトでLocalDbインスタンス名を判別する方法は?
- 8. SPFileインスタンスが変換されたファイルであるかどうかを正確に判断する方法は?
- 9. perl CGIスクリプトを実行するためにApacheを取得できません
- 10. Perl :: WSDL。スクリプトとは別の方法で生成されたメソッド
- 11. Perl(またはPython)とExcelには、セル内の複数行のテキストで使用されるフォントの種類を判別する方法がありますか?
- 12. PerlでUTF-16ファイル名の存在を確認する方法はありますか?
- 13. アップロードされたファイルからmimetypeを確認する方法
- 14. PerlのCGI、私は私のCGI Perlスクリプトでこれを行うヴァール
- 15. perl cgiスクリプトからPythonプログラムを呼び出す方法
- 16. Perl CGIで正しくプログラミングする/別のperl cgiファイルから同じデータにアクセスする
- 17. HTMLのPerl CGIスクリプト
- 18. Perl CGIスクリプトwith css
- 19. Android cgi web serverファイルとローディングperlスクリプト
- 20. Perl/CGIスクリプトでJavaプログラムを実行する
- 21. Perlをアップグレードした後に私のPerl CGIスクリプトがコンパイルされないのはなぜですか?
- 22. Perlスクリプトは、コマンドプロンプトでOK動作しますが、CGIスクリプト
- 23. あるPerlスクリプトから別のPerlスクリプトに引数を渡すにはどうすればよいですか?
- 24. アップロードされたcsvファイルのスクリプトをshinyで実行する
- 25. 指定されたファイルがFASTAであるかどうかを確認する方法はありますか?
- 26. Perl CGIプログラムは、HTMLの連絡先フォームにバッファオーバーフローまたはスクリプトの脆弱性がありますか?
- 27. カスタムイベントを別のスクリプトからオンザフライでロードされた要素にバインドする方法はありますか?
- 28. Perlでリテラル文字列に定義された関数名を呼び出す方法はありますか?
- 29. 添付ファイルのファイル名を表示する必要があります。ファイルはwindow.openで開かれた別のページにアップロードされます
- 30. 誰もがどこからでもPerlスクリプトを実行可能にする方法はありますか?
おかげニュート。 HTTP :: DetectUserAgentとFile :: BaseNameを組み合わせると、やり遂げる方法があるようです。 –