• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ファイルのアップロードについて)

ファイルのアップロードに関する問題

このQ&Aのポイント
  • CGIとPerlを使用してファイルのアップロードを実現しようとしています。画像系はうまくいくが、テキスト系をアップロードすると、ダウンロード時に余分な改行が挿入されてしまいます。
  • 問題の原因は特定できず、サーバーのOSやFTPソフトのバージョンによって結果が異なるようです。Redhat5.0の場合は正常に動作したこともあるそうです。
  • この問題について詳しい方からのアドバイスを求めています。どのような原因が考えられるのか教えていただければ幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
noname#25358
noname#25358
回答No.1

 テキストの場合は、アスキーモードでアップロードするのは少々面倒です。  テキストファイルと分かっているファイルの場合、意識的に改行コードから \r をすべて除いてあげなくてはいけません。  NextFTP は、改行コードが \n と \r のどちらが来てもいいように、この2つのコードを「それぞれ」\n\r に変換してしまっているからです。  この機能はIEにも搭載されています。  RedHat はおそらく、Content-type: text がくると自動的にそれを探知して改行コードの問題を解決してくれるんだと思います。  これは RedHat 固有の機能だと思うので、これには期待しない方がいいでしょう。  置き換え処理は、シフトJISの場合、正規表現で s/\r//g; とすればOKです。

snake103
質問者

補足

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

その他の回答 (2)

noname#25358
noname#25358
回答No.3

 えー。  1はイエスです。  で、2ですが……。  何でしょうそれは(笑)  あるいはIE5が改行を勝手に \n\r から \n に変換してくれたんでしょうか?  だとしたらつじつまが合うんですが。

snake103
質問者

お礼

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

noname#25358
noname#25358
回答No.2

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

snake103
質問者

補足

有難うございます。たびたびすいません。あと一つだけ質問させてください。 1、改行コードCRLF(\r\n)の場合、\n\r\n\rは、一行ごとのはなしですよね? 2、検証してみたところ、IE5をつかっているのですが、IEでアップロードしたものをNextFTPでバイナリーモードでダウンロードする場合は、何の問題もありませんでした。これは、なぜでしょうか?