- - PR -
WININET.DLLを使用したFTP転送について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-02-17 10:16
こんにちは。
.NETとは直接関係無いかもしれませんが、 レガシーシステムからファイルをFTPにてダウンロードする機能を作成しています。 漢字を含まないファイルの場合、WININET APIのFtpGetFileを使用して、 ASCIIにて問題なくファイルをGETできます。 漢字を含むファイルの場合、QUOTE TYPEを指定して、GET出来ることを、 コマンドラインのFTPで確認し、 WININET APIのFtpCommandを使用して、実現しようとしていますが、 QUOTE TYPEを送出後のFtpGetFileに反映されません。 何か別の設定等が必要なのでしょうか? 下手な文章で申し訳ありませんが、宜しくお願いします。 ※FtpCommandでのQUOTE TYPE送出が成功している事は、 発行直後にInternetGetLastResponseInfoにて確認しています。 | ||||
|
投稿日時: 2005-02-17 10:48
どんな風に記述していますか?FtpCommandはQUTEコマンドを送信する命令です。したがって下のようになるはずですが・・・。 FtpCommand(hConect, ..., TRUE, "TYPE ...", 可能であればFTPサーバーのログを見ると、解決が早いかと。QUOTE TYPEを発行した前後でどのような挙動をしているでしょうか? _________________ 甕星 <mikahosi@abox9.so-net.ne.jp> http://blogs.msmvp.jp/mikahosi/ | ||||
|
投稿日時: 2005-02-17 11:38
回答ありがとうございます。
具体的には、下記のとおりFtpCommandを発行しています。 bflag = FtpCommand(lFtpHandle, False, FTP_TRANSFER_TYPE_ASCII, _ "TYPE b 1", 0, hFile) また、FTPサーバは、ホストコンピュータで小生では見れませんが、 InternetGetLastResponseInfoで、下記のとおり、結果が返ってきてます。 >200-REPRESENTATION TYPE IS KANJI SHIFT-JIS >200 STANDARD DBCS CONTROL USED これは、コマンドラインのFTPにて返されるメッセージと同様でした。 ただし、その後のFtpGetFileにて >200 REPRESENTATION TYPE IS ASCII NONPRINT >200 PORT REQUEST OK. >501 COMMAND ABORTED -- FTP SERVER NOT CONFIGURED FOR SIZE >125 SENDING DATA SET ファイル名 FIXRECFM 80 >250 TRANSFER COMPLETED SUCCESSFULLY. 200〜501の行がコマンドラインのFTPとは異なるようです。 lResultCode = FtpGetFile(lFtpHandle, _ bySav_GetFileName(0), bySav_PutFileName(0), _ 1, FILE_ATTRIBUTE_NORMAL, _ FTP_TRANSFER_TYPE_ASCII + INTERNET_FLAG_RELOAD, 0) これが原因でしょうか? [ メッセージ編集済み 編集者: ほりかず 編集日時 2005-02-17 13:29 ] |
1