はじめまして。CGIにperlを使用して、ブラウザからファイルのアップロードを実現させようとしています。
binmode ( STDIN );
read ( STDIN, $tBUF, $BUFSZ)
のようにして読み込み、バイナリーモードで書き出しています。
画像系はうまくいくのですが、テキスト系をアップロードするして、アップロードしたものをFTPソフトでASCKIIモードでダウンロードすると、どの文字コードの場合でも、一行ごとに余計な改行がひとつはいってしまいます。
バイナリーモードだとうまくいきます。

FTPソフト NextFTP2.02
使用OS:windows2000 workstation
サーバーのOS:SunOS 5.8

ちなみみにサーバーがRedhat5.0のときはうまくいきました。
こういった原因はが、さっぱりわかりません。誰か教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

 テキストの場合は、アスキーモードでアップロードするのは少々面倒です。


 テキストファイルと分かっているファイルの場合、意識的に改行コードから \r をすべて除いてあげなくてはいけません。
 NextFTP は、改行コードが \n と \r のどちらが来てもいいように、この2つのコードを「それぞれ」\n\r に変換してしまっているからです。
 この機能はIEにも搭載されています。

 RedHat はおそらく、Content-type: text がくると自動的にそれを探知して改行コードの問題を解決してくれるんだと思います。
 これは RedHat 固有の機能だと思うので、これには期待しない方がいいでしょう。

 置き換え処理は、シフトJISの場合、正規表現で s/\r//g; とすればOKです。

この回答への補足

有難うございます。参考になります。補足で質問させてください。
改行コードCR(\n)でアップロードしても変な改行がはいってしまいます。
テキストでも、画像でもサーバー上で、バイナリーとして読み込んで保存する場合は、改行の問題はかかわってこないということですよね。問題となるのは、その保存された、テキストをNextFTPでダウンロードするときということでしょうか?
このときたとえば、改行コードCRLF(\r\n)の場合、\n\r\n\rに変換されてしまうといことでしょうか?
また、IEのformタグでマルチポートの指定をしていても、アスキーモードになってしまうのでしょうか?

補足日時:2001/08/08 17:03
    • good
    • 0

 えー。



 1はイエスです。

 で、2ですが……。
 何でしょうそれは(笑)
 あるいはIE5が改行を勝手に \n\r から \n に変換してくれたんでしょうか?
 だとしたらつじつまが合うんですが。
    • good
    • 0
この回答へのお礼

何度も、大変有難う御座いました。
自分で出した結論としては、NextFTP場合拡張子を.txt以外にするとバイナリーと認識するということ。当面は、拡張子を変えてやろうと思います。(笑)

お礼日時:2001/08/08 22:53

 そうです。



 これはダウンロードするときの問題なので、アップロードするときは規定通り動いているはずです。
 ですので、IEのマルチポートはアップロード時の話なので、やっぱり駄目なはずです。

この回答への補足

有難うございます。たびたびすいません。あと一つだけ質問させてください。

1、改行コードCRLF(\r\n)の場合、\n\r\n\rは、一行ごとのはなしですよね?

2、検証してみたところ、IE5をつかっているのですが、IEでアップロードしたものをNextFTPでバイナリーモードでダウンロードする場合は、何の問題もありませんでした。これは、なぜでしょうか?

補足日時:2001/08/08 18:29
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング

おすすめ情報