Curl Global Community
HTTPサーバにファイルをアップロードとダウンロード - Printable Version

+- Curl Global Community (https://communities.curl.com)
+-- Forum: Discussions (https://communities.curl.com/forumdisplay.php?fid=1)
+--- Forum: General Curl questions (https://communities.curl.com/forumdisplay.php?fid=2)
+--- Thread: HTTPサーバにファイルをアップロードとダウンロード (/showthread.php?tid=416)

Pages: 1 2


HTTPサーバにファイルをアップロードとダウンロード - zrllch - 02-28-2012

HTTPサーバ(WebDAV)にファイルをアップロードとダウンロード(あるいは開く)
の操作はCURL7.0で実現できますか、ご存知の方はいらっしゃいますでしょうか。
教えていただけませんか。よろしくお願いします。



RE: HTTPサーバにファイルをアップロードとダウンロード - hokada - 02-28-2012

HttpFileクラス のhttp-read-open-byteメソッドを使って、POST(引数にrequest-method = HttpRequestMethod.post)でデータ(引数request-dataにファイルデータをセット)をサーバに送信し、サーバサイドではJakarta commonsのUploadFile などを使って受信する実装することで、HTTPサーバにファイルを送信することができます。

ちなみに、イメージのようなバイナリファイルでなく、テキストファイルであればhttp-read-openメソッドを利用することで実現できます。




RE: HTTPサーバにファイルをアップロードとダウンロード - zrllch - 02-28-2012

ご回答をいただきありがとうございます。
CURLは直接にHttpサーバに接続して操作できませんか?
(普通なupload/dowand/open操作です)
よろしくお願いします。




RE: HTTPサーバにファイルをアップロードとダウンロード - hokada - 02-29-2012

他のAjaxなどと同様に、HTTPでファイルアップロードはサーバサイドの作りこみが少々必要となってきます。

ダウンロードなどについては可能です。(http-read-open(-byte)メソッドの戻り値InputStreamを利用。)

よろしくお願いいたします。



RE: HTTPサーバにファイルをアップロードとダウンロード - hokada - 02-29-2012

ちなみに、WebDavを使う場合は、CurlでWebDavプロトコルを実装する必要がありそうです。

よろしくお願いいたします。



RE: HTTPサーバにファイルをアップロードとダウンロード - zrllch - 02-29-2012

お世話になります。
HttpFormのadd-file(add-file-data)メソッドで実現できますか。
もしできれば、教えていただきますと幸いです。
よろしくお願いします。



RE: HTTPサーバにファイルをアップロードとダウンロード - heavybugtracker - 02-29-2012

ちょっと無理そうですね。WebDAVのプロトコルには、HttpRequestMethod.putが必要ですが、それが、http-read-openやHttpFormなどで実装されて無く、今後の機能拡張に期待したいところでしょうね。。。


RE: HTTPサーバにファイルをアップロードとダウンロード - hokada - 03-01-2012

> HttpFormのadd-file(add-file-data)メソッドで実現できますか。


これでファイルをサーバに送ることはできると思います。(試していないですが・・・)
ただ、サーバ側でアップロードしたファイルを受け取る処理はやっぱりコーディングしないといけないです。

例えばJavaであれば以下のUploadServlet.java程度です。
http://www.atmarkit.co.jp/fjava/javatips/106jakarta018.html




RE: HTTPサーバにファイルをアップロードとダウンロード - heavybugtracker - 03-01-2012

HttpRequestMethod.putはHttpFormで対応してないですが、http-read-openなどで実装されているそうです。hokadaさんが言ったようにサーバサイドを介入せずにやりたければ、webDAVのプロトコルを実装する必要があるようですね。
大変失礼しました。
(02-29-2012, 06:04 PM)heavybugtracker Wrote: ちょっと無理そうですね。WebDAVのプロトコルには、HttpRequestMethod.putが必要ですが、それが、http-read-openやHttpFormなどで実装されて無く、今後の機能拡張に期待したいところでしょうね。。。




RE: HTTPサーバにファイルをアップロードとダウンロード - zrllch - 03-02-2012

ご回答をありがとうございます。
「ネットワークドライブの割り当て」を利用して、HTTPのURLをローカルドライブに変更して、
{copy from:Url, to:Url, error-if-exists?:bool = true, recurse?:bool = false}(プロシージャ)
を使って、ローカルのファイルコピーようにHTTPサーバーにファイルコピーできますか。