IdFTPでリジューム対応するには?

解決


snoopy  2013-04-24 07:32:39  No: 44414

TIdFTPコンポーネントを使用してFTPダウンロードをしています。
都合でダウンロードにレジューム機能を付加させたいのですが、Indyのサンプルコードに書かれている

IdFTP.Get('ABCDE.dat', 'ABCDE.dat', True, IdFTP.ResumeSupported)

のように4番目の引数に「ResumeSupported」メソッドを付与するとエラーになってしまいます。
ちなみに「ResumeSupported」をfalseにすると「上書き」で動作します。

レジューム対応にさせる方法をどなたかご教授いただけませんでしょうか。

よろしくおねがいします。


igy  2013-04-24 07:57:18  No: 44415

TIdFTPコンポーネントでのレジューム動作をさせるには
http://www.freeml.com/delphi-users/3093/latest?sid=99bd6affc1fede7f92d25884bcc87ea2


Mr.XRAY  2013-04-24 09:12:47  No: 44416

>TIdFTPコンポーネントでのレジューム動作をさせるには
>http://www.freeml.com/delphi-users/3093/latest?sid=99bd6affc1fede7f92d25884bcc87ea2

どっちにレスすればいいのでしょうか ?


Mr.XRAY  2013-04-24 09:24:17  No: 44417

後,質問の文章は,それでいいのでしょうか ?
何か修正したり,追加することはありませんか ?
お断りしておきますが,「ご教授」はできませんので.


Mr.XRAY  2013-04-24 17:57:19  No: 44418

他にもコミュニティの場があります.参考までに.

http://ht-deko.minim.ne.jp/delphiforum/
http://delphi.arcadiangarden.com/delphilounge/webconv.dll
https://forums.embarcadero.com/forum.jspa?forumID=14


KHE00221  2013-04-24 19:54:53  No: 44419

サーバー側は対応してるのか?


snoopy  2013-04-24 21:19:43  No: 44420

>Mr.XRAY 様
早速のお返事ありがとうございます。
こちらの掲示板にお返事いただければありがたいです。

質問の文章など、過去のみなさんの掲示板を参考にさせていただき、再度書きなおさせていただきますね。
また他のコミュニティなどのご紹介もありがとうございます。是非参考にさせていただきます。

>KHE00221様
お返事ありがとうございます。
サーバー側は他アプリなどでレジュームが可能ですので、対応していると思います。


snoopy  2013-04-24 21:32:49  No: 44421

もうしわけありません。

Mr.XRAY様のご指摘を受けて、以下の質問に変更させてください。

-------------------------------

Delphi2006
Indy10
のIdFPコンポーネントを使用してのFTPクライアントを作成しています。

ダウンロード動作をレジューム対応できるようにしたいと考えています。

IdFTP.Get('ABCDE.dat', 'ABCDE.dat', True, IdFTP.ResumeSupported)

と記述したのですが、ローカル側に同名ファイルがあると、エラーが発生していまいます。
ローカル側にファイルが無い場合は通常ダウンロードできます。

第4引数のIdFTP.ResumeSupportedをfalseに記述を変えると、上書きでダウンロードされます。

根本的に方法が違うのか、何か記述方法が違うかと思われるのですが、何か間違いがありますでしょうか?
よろしくおねがいします。

※サーバーなどの環境面に関しては他FTPソフトなどでレジューム動作が可能なのを確認していますので、環境の面は考えづらいと判断しています。

-------------------------------


Resumeするなら  2013-04-24 21:59:20  No: 44422

第3引数は False じゃん?


Mr.XRAY  2013-04-25 04:26:21  No: 44423

>IdFTP.Get('ABCDE.dat', 'ABCDE.dat', True, IdFTP.ResumeSupported)

そもそも,このコードではダウンロードできないと思いますよ.
Source と Dest が同じですから.


けど  2013-04-25 07:38:46  No: 44424

私は力にはなれないですがあまり伝わっていないようなのでひとこと

最初のお二方のレスは
投稿して一日も返事を待たずにすぐさま他のコミュニティに同じ内容を投稿されることはマナー違反だよ
Delphiやってる人間は大抵両方読んでるよっていうことなのではないかと


KHE00221  2013-04-25 12:05:19  No: 44425

>と記述したのですが、ローカル側に同名ファイルがあると、エラーが発生していまいます。

なんのエラーがでてる?

>そもそも,このコードではダウンロードできないと思いますよ.
>Source と Dest が同じですから.

問題無いというより

Source が サーバー側のロードされるファイル名
Dest がPC側の作成されるファイル名

だから通常は同じ(.exe と同じ場所にダウンロードするならば)
作成先のフォルダを指定すれば多少かわるけど


KHE00221  2013-04-25 12:15:24  No: 44426

>と記述したのですが、ローカル側に同名ファイルがあると、エラーが発生していまいます。

リジューム有りでやると
既にファイルがダウンロード完了の状態だと
既に存在すると出るけど
その事なのかな?

ダウンロード完了の状態でなければ
このエラーは出ない。

バイナリーを
IdFTp1.TransferType := ftASCII; //デフォルト値
でダウンロードすると正常にダウンロード出来ないので
(途中までしかダウンロードできない)
リジューム有りでやると何度でもダウンロードできる


KHE00  2013-04-25 12:40:17  No: 44427

>他にもコミュニティの場があります.参考までに.
マルチポストするなと言って
他の紹介してどうするんだよ


snoopy  2013-04-25 20:05:44  No: 44428

>コメントを下さった皆様

ありがとうございます。
まず、「けどさま」に「他のコミュニティに書いてるのに・・」とご指摘をいただいた件、その通りです。。マナーがなっていないと自分でも痛感しています。結論を急ぐあまりこのようなことになってしまいました。
申し訳ありませんでした。
以降このようなことはないようにしますので、今後とも参加させていただければと思います。

>Mr.XRAYさま
GETの第一引数と第二引数ですが、今回はKHE00221さまが書いていただいているとおりで、ホスト側は接続したルート位置、ローカル側はカレントの場所で同じファイル名という条件で行っていますので、第一引数と第二引数は同じになっています。
今のところレジューム以外のダウンロードは問題ないようです。

>Resumeするなら  さま
第三引数のFALSEですが今まで触っていませんでした。ネットで落としたindyのサンプルコードに第三がTrue, 第四がResumeSupportedと記載されていましたのでこの組み合わは疑っていませんでした。
しかしご指摘通り、第三引数をFALSEにしたらレジュームっぽい動作(上書きではないダウンロードで、追記している感じ)ができるようになりました。
これでもう少し自分で確認とっていきたいと思います。

>KHE00221さま
IdFTp1.TransferTypeは、ftBinaryを記述しているので問題ないと思います。
ご指摘のダウンロード済のファイルに関しては、予めファイルサイズをチェックして、そのファイルはGET動作しないようにしています。
「同じファイルが存在します」というエラーがでていましたが、Resumeするなら  さま  が先に書いていただいたように第三引数をFALSEにすることでこのエラーが出なくなりました。

第三引数をFALSEにすることで解消できているようなので、これで何度かテストを繰り返したいと思います。

ありがとうございました。


Mr.XRAY  URL  2013-04-26 00:16:33  No: 44429

で,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


snoopy  2013-04-26 03:49:36  No: 44430

>Mr.XRAYさま

このたびは不愉快な思いをさせてしまいもうしわけありませんでした。
またそれにも関らず、最後にサンプルコードのリンクありがとうございます。感激しています。

MLの方は、1時間ほど前に投稿しました。

投稿した後、今、Mr.XRAYさまの書き込みを見ました。
また十分でない投稿をしてしまったと反省しています。

今後はしっかり肝に銘じたく思います。
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加