TIdFTPコンポーネントを使用してFTPダウンロードをしています。
都合でダウンロードにレジューム機能を付加させたいのですが、Indyのサンプルコードに書かれている
IdFTP.Get('ABCDE.dat', 'ABCDE.dat', True, IdFTP.ResumeSupported)
のように4番目の引数に「ResumeSupported」メソッドを付与するとエラーになってしまいます。
ちなみに「ResumeSupported」をfalseにすると「上書き」で動作します。
レジューム対応にさせる方法をどなたかご教授いただけませんでしょうか。
よろしくおねがいします。
TIdFTPコンポーネントでのレジューム動作をさせるには
http://www.freeml.com/delphi-users/3093/latest?sid=99bd6affc1fede7f92d25884bcc87ea2
>TIdFTPコンポーネントでのレジューム動作をさせるには
>http://www.freeml.com/delphi-users/3093/latest?sid=99bd6affc1fede7f92d25884bcc87ea2
どっちにレスすればいいのでしょうか ?
後,質問の文章は,それでいいのでしょうか ?
何か修正したり,追加することはありませんか ?
お断りしておきますが,「ご教授」はできませんので.
他にもコミュニティの場があります.参考までに.
http://ht-deko.minim.ne.jp/delphiforum/
http://delphi.arcadiangarden.com/delphilounge/webconv.dll
https://forums.embarcadero.com/forum.jspa?forumID=14
サーバー側は対応してるのか?
>Mr.XRAY 様
早速のお返事ありがとうございます。
こちらの掲示板にお返事いただければありがたいです。
質問の文章など、過去のみなさんの掲示板を参考にさせていただき、再度書きなおさせていただきますね。
また他のコミュニティなどのご紹介もありがとうございます。是非参考にさせていただきます。
>KHE00221様
お返事ありがとうございます。
サーバー側は他アプリなどでレジュームが可能ですので、対応していると思います。
もうしわけありません。
Mr.XRAY様のご指摘を受けて、以下の質問に変更させてください。
-------------------------------
Delphi2006
Indy10
のIdFPコンポーネントを使用してのFTPクライアントを作成しています。
ダウンロード動作をレジューム対応できるようにしたいと考えています。
IdFTP.Get('ABCDE.dat', 'ABCDE.dat', True, IdFTP.ResumeSupported)
と記述したのですが、ローカル側に同名ファイルがあると、エラーが発生していまいます。
ローカル側にファイルが無い場合は通常ダウンロードできます。
第4引数のIdFTP.ResumeSupportedをfalseに記述を変えると、上書きでダウンロードされます。
根本的に方法が違うのか、何か記述方法が違うかと思われるのですが、何か間違いがありますでしょうか?
よろしくおねがいします。
※サーバーなどの環境面に関しては他FTPソフトなどでレジューム動作が可能なのを確認していますので、環境の面は考えづらいと判断しています。
-------------------------------
第3引数は False じゃん?
>IdFTP.Get('ABCDE.dat', 'ABCDE.dat', True, IdFTP.ResumeSupported)
そもそも,このコードではダウンロードできないと思いますよ.
Source と Dest が同じですから.
私は力にはなれないですがあまり伝わっていないようなのでひとこと
最初のお二方のレスは
投稿して一日も返事を待たずにすぐさま他のコミュニティに同じ内容を投稿されることはマナー違反だよ
Delphiやってる人間は大抵両方読んでるよっていうことなのではないかと
>と記述したのですが、ローカル側に同名ファイルがあると、エラーが発生していまいます。
なんのエラーがでてる?
>そもそも,このコードではダウンロードできないと思いますよ.
>Source と Dest が同じですから.
問題無いというより
Source が サーバー側のロードされるファイル名
Dest がPC側の作成されるファイル名
だから通常は同じ(.exe と同じ場所にダウンロードするならば)
作成先のフォルダを指定すれば多少かわるけど
>と記述したのですが、ローカル側に同名ファイルがあると、エラーが発生していまいます。
リジューム有りでやると
既にファイルがダウンロード完了の状態だと
既に存在すると出るけど
その事なのかな?
ダウンロード完了の状態でなければ
このエラーは出ない。
バイナリーを
IdFTp1.TransferType := ftASCII; //デフォルト値
でダウンロードすると正常にダウンロード出来ないので
(途中までしかダウンロードできない)
リジューム有りでやると何度でもダウンロードできる
>他にもコミュニティの場があります.参考までに.
マルチポストするなと言って
他の紹介してどうするんだよ
>コメントを下さった皆様
ありがとうございます。
まず、「けどさま」に「他のコミュニティに書いてるのに・・」とご指摘をいただいた件、その通りです。。マナーがなっていないと自分でも痛感しています。結論を急ぐあまりこのようなことになってしまいました。
申し訳ありませんでした。
以降このようなことはないようにしますので、今後とも参加させていただければと思います。
>Mr.XRAYさま
GETの第一引数と第二引数ですが、今回はKHE00221さまが書いていただいているとおりで、ホスト側は接続したルート位置、ローカル側はカレントの場所で同じファイル名という条件で行っていますので、第一引数と第二引数は同じになっています。
今のところレジューム以外のダウンロードは問題ないようです。
>Resumeするなら さま
第三引数のFALSEですが今まで触っていませんでした。ネットで落としたindyのサンプルコードに第三がTrue, 第四がResumeSupportedと記載されていましたのでこの組み合わは疑っていませんでした。
しかしご指摘通り、第三引数をFALSEにしたらレジュームっぽい動作(上書きではないダウンロードで、追記している感じ)ができるようになりました。
これでもう少し自分で確認とっていきたいと思います。
>KHE00221さま
IdFTp1.TransferTypeは、ftBinaryを記述しているので問題ないと思います。
ご指摘のダウンロード済のファイルに関しては、予めファイルサイズをチェックして、そのファイルはGET動作しないようにしています。
「同じファイルが存在します」というエラーがでていましたが、Resumeするなら さま が先に書いていただいたように第三引数をFALSEにすることでこのエラーが出なくなりました。
第三引数をFALSEにすることで解消できているようなので、これで何度かテストを繰り返したいと思います。
ありがとうございました。
で,Delphi ML の方はどうするのですか ?
まさか,「放置」じゃないですよね.「放置」もマナー違反です.
一般社会の良識を考えれば当然ですが.
>第一引数と第二引数は同じになっています。
http://ht-deko.minim.ne.jp/tech045.html#tech095
最小限のコードとは言えない気がします.最初から説明があれば別ですが,
提示したコードだけで,≪何か間違いがありますでしょうか?≫ と言われても
かなりの無理があると思います.
≪ご教授いただけませんでしょうか。≫ と一見,丁寧なように受け取れますが,
マルチポストといい,説明からは,「慇懃無礼」と受け取られてもしょうがないでしょう.
http://ht-deko.minim.ne.jp/delphiforum/?vasthtmlaction=viewtopic&t=1081.0#postid-1269
>Mr.XRAYさま
このたびは不愉快な思いをさせてしまいもうしわけありませんでした。
またそれにも関らず、最後にサンプルコードのリンクありがとうございます。感激しています。
MLの方は、1時間ほど前に投稿しました。
投稿した後、今、Mr.XRAYさまの書き込みを見ました。
また十分でない投稿をしてしまったと反省しています。
今後はしっかり肝に銘じたく思います。
ありがとうございました。
ツイート | ![]() |