CGI_Lite.pmを使用してファイルをアップロードするCGIを書いていますが、ファイル名によっては、名前の途中までが消えてしまいます。
cgiとhtmlは、以下のとおりです。EUC、Shif-JISの両方で、また、LinuxとWindowsXPの両方で試してみました。
例
「可能性.txt」というファイルをアップすると、
「性.txt」というファイル名になります。
環境:
CGI_Lite.pmは、2つのバージョンを試してみました。
(1), CGI_Lite 2.02 http://search.cpan.org/~smylers/CGI-Lite-2.02/Li …
(2), CGI_Lite 1.8 http://search.cpan.org/dist/CGI_Lite/
OSなど
(1), WindowsXP + AnHTTPd + Perl5.8.8
(2), SuSE Linux + Apache2.0 + Perl5.8.3
■アップするHTML
<html>
<form action='test.cgi' ENCTYPE='multipart/form-data' method='post'>
<input type="file" name="file1">
<input type="submit">
</form>
</html>
■アップされるCGI(test.cgi)
#!/usr/bin/perl
use CGI::Lite;
my $cgi=new CGI::Lite;
$cgi->add_timestamp(0);
$cgi->set_directory('./') or die $!;
$cgi->set_platform ('Unix');
$cgi->set_buffer_size (10000);
my %in = $cgi->parse_form_data();
print"Content-type: text/html\n\n";
print"-->$in{'file1'}\n";
以上、よろしくお願いします。
No.2ベストアンサー
- 回答日時:
sjisのまま扱いたいということなら、
ShiftJIS 「脳」の文字コード -OKWave
http://okwave.jp/qa3306321.html
の回答 No.2 にあるようなパターンで、ダメ文字の中に隠れている
'\' をエスケープすればうまくいきませんか?
デバッグのときなんかはいろいろ見落としがちですからね。
謝るこたないですよ♪
度々、ありがとうございます。
CGI_Lite.pmのソースの中で、STDINからの入力部分に、お教えいただいたリンクの回答No.2を
挿入してみました。
結論からいうと、ファイル名の「可能性.txt」は「性.txt」のままです。
ただ、<input type="text">などで送ったPOSTデータは「可能性」が「可能\性」として
変換されるので、もう少しCGI_Lite.pmを解析すればなんとかなりそうな気はしています。
Perlは(も)あまり詳しくなので、時間のあるときにでも頑張ってみようと思います。
ありがとうございました。
No.1
- 回答日時:
EUCでも発生するというのでちとアレですが
>echo 可能性|hexdump
00000000: 89 C2 94 5C 90 AB 0A .B.\.+.
'能'がいわゆるダメ文字なんで問題起こしてるんじゃないでしょうか。
この回答への補足
すみません、大変失礼しました。
EUCも試したつもりだったのですが、もう一度EUCで試してみたところ、ファイル名が問題なく取得できました。
とりあえず、これで回避方法ができたわけですが、できればShift-JISのほうが助かるので、このQ&Aはもう少し開いたままにしておきます。
よく確認せずにすみませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- CGI CGIで出力するhtmlの<!DOCTYPE html>等のタグは要りますか? 2 2023/02/05 21:26
- CGI CGIが読み書きするデータファイルのパーミッションはさくらのインターネットでは何にするべき? 1 2023/05/02 16:44
- Perl perlの構文でカンマの意味が分からない 2 2022/10/30 01:53
- CGI htmlからcgiを自動的に起動させたい 1 2023/02/21 19:39
- Perl perlのflock関数でロックをかけたままopen関数で何度もファイルを開きなおすことはできますか 3 2023/05/01 22:25
- ホームページ作成・プログラミング CGIが実行可能なHP領域又はレンタルサーバーでおすすめの所を教えてください 現在ホームページ領域の 1 2023/01/01 11:47
- CGI 「CGIにより定義されていない」とは・・・ ? 3 2023/01/01 12:00
- CGI (フリーの)ツリー掲示版CGI、昔は多用させてもらいましたが・・今セキュリティ上どうでしょう? 2 2023/06/25 07:18
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
apacheでPerl CGIが作動せず、5...
-
ホームページでCGIのフォームを...
-
CGIで出力するhtmlの<!DOCTYPE ...
-
フォームを再送信しますか?
-
エクセルで集計したい。
-
古ーくからフリーのtree.cgi掲...
-
CGIって何ですか?簡潔に教えて...
-
cgiからsendmailを送信で文字化け
-
Perl 別ドメインのファイル存在...
-
チェックボックスでのvalue値の...
-
CGIの設置が分かりません・・・
-
一番簡単なCGI,掲示板の設置教...
-
サイト訪問者の情報を取得したい
-
htmlからパラメータで、cgiに渡...
-
CGIゲーム設置について
-
perlで書いたcgiでsqliteの使い...
-
CGIが読み書きするデータファイ...
-
「CGIにより定義されていない」...
-
掲示板専用スクリプトなどを使...
-
cgiの注釈が出来ない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
cgiファイルを実行すると、「開...
-
MIMEタイプの設定を上書き
-
CGIをフレームで表示するには…
-
Mac OSX LionでCGI/Ruby動かず
-
CGIをHTML(scriptタグ)上でうま...
-
ファイル間の変数引き継ぎ方法...
-
テキストの受け渡しの不具合
-
EXCELファイルに誰がアクセスし...
-
《エクセルVBA》「他の人が該当...
-
URLに~/cgi-bin/~を隠す方法
-
CGIでソースがそのままでてしま...
-
VBScriptで、ファイルから任意...
-
ラジオボタンのグループ化
-
VBAでサーバーにアクセスするに...
-
YY-BOARDについて
-
ASPから既存のexcelブックを開...
-
FTPにて553エラー
-
a.cgiからb.cgiを
-
SFTPなどは使わないホームペー...
-
特定のCGIだけ、作動するかわり...
おすすめ情報