WININET.DLL FtpCommand(TYPE)がFtpGetに反映されない

このQ&Aのポイント
  • 漢字を含まないファイルの場合、WININET APIのFtpGetFileを使用して、ASCIIにて問題なくファイルをGETできます。
  • 漢字を含むファイルの場合、コマンドラインのFTPではQUOTE TYPEを指定してGET出来ることを確認できたのですが、WININET APIのFtpCommandの場合だとQUOTE TYPEが送出後のFtpGetFileに反映されません。
  • FtpCommand自体は成功しているようなのですが・・・何とも五里霧中の状態です。
回答を見る
  • ベストアンサー

WININET.DLL FtpCommand(TYPE)がFtpGetに反映されない

漢字を含まないファイルの場合、WININET APIのFtpGetFileを使用して、ASCIIにて問題なくファイルをGETできます。 漢字を含むファイルの場合、コマンドラインのFTPではQUOTE TYPEを指定してGET出来ることを確認できたのですが、WININET APIのFtpCommandの場合だとQUOTE TYPEが送出後のFtpGetFileに反映されません。 FtpCommand自体は成功しているようなのですが・・・何とも五里霧中の状態です。 具体的には、以下のようなコマンドを発行しています。 bflag = FtpCommand(lFtpHandle, False,FTP_TRANSFER_TYPE_ASCII,"TYPE B", 0, 0) 説明に不備があるかもしれませんが、もし少しでも分かる方がいらっしゃいましたら、ヒント程度でも良いのでご回答をお願い致します。

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

  • ベストアンサー
  • todo36
  • ベストアンサー率58% (728/1234)
回答No.1

FtpGetFileの引数でFTP_TRANSFER_TYPE_BINARYを指定すればよい

10mo10mo
質問者

お礼

お礼が遅くなり、申し訳ございませんでした。todo36さんのご回答がヒントになり、緊急だった問題も何とか片付ける事が出来ました。迅速かつ的確なご回答に、心から感謝しております。本当にありがとうございました。

関連するQ&A

  • API FtpPutFileの戻り値

    お世話になっております。 API FtpPutFileを使用しているのですが 確実にFalseになります。一日悩みましたが原因が わかりません。 If FtpPutFile(lngConnect, _ "***.txt", _ "***.txt", _ FTP_TRANSFER_TYPE_ASCII, _ 0&) <> False Then です。必要なものを付け加えておきます。 Private Declare Function FtpPutFile Lib "wininet.dll" _ Alias "FtpPutFileA" _ (ByVal hFtpSession As Long, _ ByRef lpszLocalFile As String, _ ByRef lpszNewRemoteFile As String, _ ByVal dwFlags As Long, _ ByVal dwContext As Long) As Long Private Const FTP_TRANSFER_TYPE_ASCII = &H1& です。環境はWinXP,VB6+SP5 よろしくお願い致します。

  • Wininet.DLL使用時のプログラム終了のトラブル

    Wininet.DLLを使用してFTPでファイルのアップロード・ダウンロードを完了した後、そのプログラムをインストールしたパソコンにより(OSはWin2k)プログラムの終了処理(END)に時間がかかるPCがあります。正常に終了できるPCもあります。 PCによって上手く(ENDを正常に)終わる場合とENDに至るのに時間がかかるものが存在するのはどのような事が原因なんでしょう? ファイル転送自体は正常に完了しております。 上手く伝わったがどうか解りませんが大変困っております。

  • VB6 FTPファイルのパーミッション変更

    VB6からFTPを使用してファイルを送信したのですが、 パーミッション変更の仕方が分からず困っています。 いろんなところの過去ログやらを見て、FtpCommandを使用して quote site chmod 777 ファイル名 をやれば良さそうだというところまで解ったのですが、 何せVB6なもんでFtpCommandの使用方法まで解りませんでした。 まず下記のように定義しました。 Public Declare Function FtpCommand Lib "wininet.dll" Alias "FtpCommandA" _ (ByVal hFtpSession As Long, _ ByVal fExpectResponse As Boolean, _ ByVal dwFlags As Long, _ ByVal lpszCommand As String, _ ByVal lContext As Long, _ phFtpCommand As Long) As Boolean その後、FtpCommandの実行はこのようにしています。 lngRtn = FtpCommand(hConnection, 1, FTP_TRANSFER_TYPE_ASCII, strCmd, 0, hResponse) パラメータで渡すコマンド文字列を下記のようにしました。 strCmd = "quote site chmod 777 temp.txt" この場合は戻り値が0で、パーミッションも変更されませんでした。 (あっという間にlngRtnに0が入ってきました) そこで、QUOTEを省略してみました。 strCmd = "site chmod 777 temp.txt" すると戻り値が0でしたが、パーミッションは変更されました。 (やたら時間が掛かりました) しかし、戻り値が0だと正常終了なのか、エラー終了なのか判断できない気がします。 判定の仕方が間違っているとか、定義が違う、パラメータが違う等、 どなたか何かご存知であればご教授願いたいと思います。 長文ですいませんでした。 環境:WinXP, Win2008Svr R2

  • プロキシサーバー経由でftpのgetを行う方法

    社内LANからプロキシサーバーを経由して、外部のサーバにあるファイルをftpでgetしようとし ています。 方法としては、定期実行するためにスクリプトで下記のようなテキスト(ftpcmd.txt)を作成し、 バッチファイル(auto.bat)でftpコマンドを実行する予定です。 <ftpcmd.txt> open xxx.xxx.xxx.xxx user1 passwd1 ascii get /logfiles/todaylog.txt quit <auto.bat> ftp -s:ftpcmd.txt ここで、質問なのですが、上記のような方法を用い、プロキシサーバー経由でftpを使ったgetを 行うには、どのように行えばいいでしょうか。または、DOSコマンドを使って、行うことは無理な のでしょうか。その場合、ほかにはどのようなやり方が考えられるでしょうか。どなたか、ご助言 いただけませんでしょうか。

  • VBで文字コード変換

    LAN環境で、クライアントからサーバー上のデータをFTPで取得する為にVB6で『Microsoft Internet Transfer Control』を使用してファイルをGETしています。 トコロがこのサーバーがIBMのメインフレームの為、文字コードがEBCDICなのでGETしたファイルをPCで読む(目で)事が出来ません。 これをEBCDICからASCIIに簡単に変換する方法は無いでしょうか? 又、逆の変換もしたいのですが。

  • FTPについて

    いつもお世話になっております。 本日はFTPについて質問させていただきます。 WINDOWSXPを使っていて、そこにもともと入っていたFTPを使用しております。 そこでふと思ったのが、バイナリーかアスキーかのどちらでファイルのやり取りをしているのだろうということです。 WINDOWSとUNIXとでは改行コードが違うのでASCIIであげたいと思っているのですが、勝手に切り替わっているみたいなのです。 私はjavaのソース、クラスファイルをやりとりしています。 仕組みを教えてください。

  • FTPコマンドでgetしたい

    FTPコマンドでファイルを転送したい。操作はクライアントで行っています。 サーバ⇒クライアントです。ディレクトリー構成は。(サーバー側)c:\2.txt を⇒(クライアント側)c:\2.txt に転送したいのですがエラーが出ます。次のように実行しています。 ftp>get c:\2.txt c:\2.txt としています。これを実行すると次のエラー 【550 c:\2.txt :The filename is incorrect】 と出ます。どうすればよいでしょうか? ファイルタイプもascii にしたりbin にしたり試しているがだめです。 お願いします。

  • FTPファイルのget後のファイル削除について

    IIS7.5とWindows Server 2008 R2でFTPサーバーを構築しています。 FTPサーバーにファイルを保存して、そのファイルをお客様がFTPサーバーに 接続してgetします。 その際に、同じファイルが2回get出来ないように、getされたファイルのみを 削除したいと考えています。 また、getされた場合だけ削除したいので、getされていないファイルの削除は 出来ない為、コマンドによる自動削除は行えません。 getされた場合にのみ該当ファイル削除するようなソフトや方法などがあれば お教え下さい。 宜しくお願い致します。

    • ベストアンサー
    • HTML
  • 自分のディレクトリ?

    FTPを使って学校にあるファイルをgetしたいのですが、 telnetを使って学校のログインしますよね、 それで次にftpのコマンドを 打って、ftpを起動させて get ファイル名ってうちますよね? そしたらNot connectedってでるんですが、、 なぜでしょうか? しかももしできたのとしても 一体どこに保存とかされるのでしょうか? お願いします。

  • IBM漢字コードのSJIS変換方法

    こんにちは。 現在IBMホストのデータをFTPしてUNIX上にて使用しています。ファイルの内容はcsvファイルで、ある項目は英数字のみ、ある項目は漢字のみというような物です。 現在、英数字は上手くいってますが、漢字の部分が化けてしまっています。 今やっているやり方は、ホストのファイルをbinaryモードでFTPして、ddコマンドにてEBICDICコードをASCIIコードに変換します。しかし、漢字の部分が化けているという状況です。 IBMのホームページをみると、 「IBM漢字コードとシフトJISとの変換は、オペレーティング・システム標準の iconvコマンドとiconv()サブルーチンで可能ですので、こちらをご利用下さい。 」 と書いてありますが、まったく要領を得ません。 iconvをmanのコマンドで見ましたが、書いてある内容が理解できません。 どなたか同じような経験をしたかた、アドバイスをよろしくお願いします。 iconvのオプションはこう付ければ上手くいくとか、 変換表を自前で作成したなどなど、他にこんな方法があるなどヒントをいただけると助かります。

専門家に質問してみよう