質問

現在のプロジェクトでは、クライアントがアクセスできる仮想ファイル ストアを提供するために WebDAV を実装することを考えていました。まだ Google で調べただけですが、次の 2 つの方法を実装するだけで済むようです。

GET, PROPFIND

これは素晴らしいことだと思います。ただ興味があっただけなんですけどね。ファイルのアップロードを実装したい場合:

PUT

私は実装していませんが、十分簡単だと思います。私の唯一の懸念は、ユーザーが標準の Vista Explorer または OSX Finder を使用している場合に進行状況メーターが表示されるかどうかです。

WebDAV の経験者からの話を探していると思います。

役に立ちましたか?

解決

多くのWebDAVクライアントについても、読み取り専用アクセスのために、あなたはまた、オプションをサポートする必要があります。あなたがアップロードをサポートしたい場合は、明らかにPUT要求され、そしていくつかのクライアント(MacOS Xのは?)ロックのサポートが必要になります。

(ところで、 RFC 4918 の情報の権威源です)。

他のヒント

WebDAV プロトコルの大部分を約 1 日の作業で実装しました。 http://github.com/nfarina/simpledav

私は Google App Engine で実行できるように Python で作成しましたが、他の言語でも同様の作業になると思います。全体として、約 2 ページのコードです。

次のメソッドを実装しました。オプション、PROPFIND、MKCOL、DELETE、MOVE、PUT、GET。これまでのところ、Transmit と Cyber​​duck をテストしましたが、どちらもうまく動作します。

これが、次に WebDAV サーバーの実装に興味を持つ人にとって何らかのガイダンスになれば幸いです。これは難しいプロトコルではなく、「深さ」や「コレクション」などの抽象化された言語が非常に密集しているだけです。

仕様は次のとおりです。 http://www.webdav.org/specs/rfc4918.html

ただし、プロトコルを理解する最良の方法は、クライアントが動作中のサーバーと対話しているのを観察することです。Transmit を使用して Box.net の WebDAV サーバーに接続し、Charles Proxy でトラフィックを監視しました。

少し遅れてパーティーに、私はWebDAVプロトコルのほとんどを実装していると私はあなたがプロトコルのほとんどを実装する必要があります自信を持って言うことができます。

OS / XのためにあなたがLOCKとUNLOCKを含み、クラス2のWebDAVをサポートし、必要があります(私は場合は、完全にHTTPを実装することが特に困難が見つかりました:ヘッダが、Finderのためにあなたはそれを少しだけ必要があります。 )

これは私の個人的な調査結果の一部です

http://sabre.io/dav/clients/windows/する http://sabre.io/dav/clients/finder/する

ホープ、このことができます。

あなたが言う、下のApache Jackrabbitのを実行する場合、Tomcatが、WebDAVと店舗のアップロードされたファイルを提供するように構成することができます。おそらくそれは、計画実施のための有用なモデル、あるいは良い十分な代替となります。

のWebDAV のためのApache Jackrabbitのサポート

また、私はWebDAVサーバーをテストするための便利なツールであることが判明しているBitKinexクライアント(30日間の無料試用版)、を認識することができます。

私たちは、ファイアウォールの外のクライアントにいくつかのファイル共有のフォルダベースのビューを提供するために、内部でWebDAVを使用しています。私たちは、このためにIIS6を使用している。

基本的に、それはあなたがWebDAVを経由して利用できるようにする各ネットワーク・ファイル・システムにマップするIISで仮想ディレクトリを作成することに帰着します。 「他のコンピュータ上にある共有」から来たコンテンツでそれを設定 - ネットワークディレクトリ値のための共有へのUNCパスを使用します。私たちは、インデックスこのリソースを除くすべてのオプションをオンにしてください。すべてのデフォルトコンテンツページを無効にします。 (私たちは同様にSSLを使用して設定されている)Windows統合認証をオンにします。私はルートは、匿名へのアクセスを拒否し、任意の認証されたユーザーへのアクセスを許可するように設定しています。また、ワイルドカードMIMEマッピングを持っている(。*アプリケーション/オクテットストリームに)。 IISのWebDAVでのWebサービス拡張を有効にします。また、あなたはそれがユーザーの資格情報を渡すことができますので、アクセスすることができるすべてのファイルサーバーへのアクセス権を委任するためにWebサーバを設定する必要があります。

あなたがMacintoshクライアントを使用している場合は、

あなたはまた、ダーウィンのクライアントのために401〜403エラーをマップするISAPIフィルタが必要な場合があります。あなたは、ディレクトリへの書き込み権限を持っていないとき、MicrosoftとAppleが状況を処理する方法に同意しません。 Appleが起きてからこれを維持し403(禁止)エラーにそれを翻訳し、401(アクセス拒否)エラー時に資格情報を再送信し続けます。デフォルトでは、Appleはそれがアクセスするすべてのディレクトリに「ドット」ファイルを書くのが好き。あなたはフィルタを持っていない場合は、書き込みアクセス権を持っていないディレクトリをナビゲートファインダーをクラッシュなってしまいます。必要であれば、私はこのためのソースコードを持っています。

これはすべて私の頭の上からです。それは私が何かを見逃している可能性があること(可能性?)ことが可能です。あなたは問題がある場合は、私のウェブサイト上の連絡先情報を経由して私に連絡すること自由に感じ。

私たちは、ウェブベースの製品上のWebDAVサーブレットを持っています。

私は、Apache Jackrabbitのにそれを実装するための良い助けを見つけました。しかし、WebDAVは、クライアント側のサポートに深刻なP.I.T.Aです。

多くのクライアントの実装は、その挙動が大きく異なると、あなたが最も可能性の高い盗聴の実装のいくつかの種類をサポートする必要があります。

いくつかの例を: MS Vistaが唯一のSSL経由の認証をサポートしています。

ほとんどのWindowsベースのWebDAVクライアントは、あなたのWebDAVサーバ/ LETは、SharePointサーバーであると仮定し、

(したがって、WebDAVプロトコルに従っていない)に応じて行動します

この一例では、あなたが書く得ることができる文句を言わない他の(すなわちyourdomain.com/ないyourdomain.com/where/webdav/should/live)を許可し、サーバーのルート上の未認証LOCK要求する必要があることですMSウィンドウでアクセスも。 (これは自分のものでusualy server.com/servlets/paths/thelocationに住んでいるTomcatのマシン上の重大なP.I.T.Aである)

MSオフィスのほとんど(全て?)のバージョンは、WebDAVリンクに異なる反応します。

私は私のポイントは、あなたが期待する、その後多くの困難することができ、既存の製品にWebDAVサポートを統合していると思います。そして可能ならば、私は

などJackrabbitののwebdavServerとして(半)-standalone WebDAVサーバーを使用するようにアドバイス、またはApache mod_webdavう

私は、OS XのFinderのWebDAVサポートは本当に細心の注意であることがわかってきました。読み書きのサポートを得るために、あなたは他のビットに加えて、LOCKを実装する必要があります。

Iは、Pythonモジュールは、階層フォルダのような構造にデータベースに格納されたPostresデータベースへのWebDAVインタフェースを書きました。死体でそれにアクセスすることはうまく働いた、とIIRC GUIウィンドウブラウザがあまりにも働いたが、Finderは、読み取り専用以外のものとして共有をマウントすることを拒否します。

プログレスバーを与える場合のであれば、私は知りません。私が扱ったファイルは、それらからの読み出し/コピーがほぼ瞬間的であったことを十分に小さかったです。それがマウントされた共有の他のタイプのために行います。

- 私はおそらく、プログレスバーを与えるファインダーを使用して、大きなファイルのコピーを考えます。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top