HTTPサーバにファイルをアップロードとダウンロード

13 件の投稿

HTTPサーバ(WebDAV)にファイルをアップロードとダウンロード(あるいは開く)
の操作はCURL7.0で実現できますか、ご存知の方はいらっしゃいますでしょうか。
教えていただけませんか。よろしくお願いします。
HttpFileクラス のhttp-read-open-byteメソッドを使って、POST(引数にrequest-method = HttpRequestMethod.post)でデータ(引数request-dataにファイルデータをセット)をサーバに送信し、サーバサイドではJakarta commonsのUploadFile などを使って受信する実装することで、HTTPサーバにファイルを送信することができます。

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

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

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

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

よろしくお願いいたします。
ちなみに、WebDavを使う場合は、CurlでWebDavプロトコルを実装する必要がありそうです。

よろしくお願いいたします。
お世話になります。
HttpFormのadd-file(add-file-data)メソッドで実現できますか。
もしできれば、教えていただきますと幸いです。
よろしくお願いします。
ちょっと無理そうですね。WebDAVのプロトコルには、HttpRequestMethod.putが必要ですが、それが、http-read-openやHttpFormなどで実装されて無く、今後の機能拡張に期待したいところでしょうね。。。
> HttpFormのadd-file(add-file-data)メソッドで実現できますか。


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

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

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

ご回答をありがとうございます。
「ネットワークドライブの割り当て」を利用して、HTTPのURLをローカルドライブに変更して、
{copy from:Url, to:Url, error-if-exists?:bool = true, recurse?:bool = false}(プロシージャ)
を使って、ローカルのファイルコピーようにHTTPサーバーにファイルコピーできますか。
(02-29-2012, 11:56 AM)hokada Wrote: ちなみに、WebDavを使う場合は、CurlでWebDavプロトコルを実装する必要がありそうです。

よろしくお願いいたします。
CurlでWebDavプロトコルを実装するについて、何かご参照できるものがありますか。


RFC2518はWebDAVのオフィシャル文書ですので、一番信頼のできる資料でしょう。次のリンクに日本語訳があるうえ、Apacheなどの関連資料も載っています。
http://webdav.todo.gr.jp/download/
You will need to implement a HttpRequestData subclass that returns the data to be sent from HttpRequestData.request-data. You can use that with a PUT request (HttpRequestMethod.put). Full WEBDAV includes lots of methods that are not in the HttpRequestMethod enum, so you will not be able to implement things that require those methods unless you re-implement things with DataTCPSocket.