6

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

GET, PROPFIND

これは素晴らしいと思います。でも興味があった。次の方法でファイルのアップロードを実装したい場合:

PUT

私はそれを実装していませんが、それは十分に単純なようです。私の唯一の懸念は、ユーザーが標準のVistaExplorerまたはOSXFinderを使用している場合に、進行状況メーターが表示されるかどうかです。

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

4

8 に答える 8

8

多くの WebDAV クライアントや読み取り専用アクセスの場合でも、OPTIONS をサポートする必要があります。アップロードをサポートしたい場合は、明らかに PUT が必要です。一部のクライアント (MacOS X?) では、ロックのサポートが必要になります。

(ちなみに、RFC 4918は信頼できる情報源です)。

于 2009-01-17T11:29:02.107 に答える
6

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

OS / Xの場合は、LOCKとUNLOCKを含むクラス2 WebDAVサポートが必要です(http If:ヘッダーを完全に実装するのは特に難しいと思いましたが、Finderの場合は少しだけ必要です)。

これらは私の個人的な発見のいくつかです:

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

お役に立てれば

于 2009-04-23T03:25:52.663 に答える
6

WebDAV プロトコルのほとんどを約 1 日で実装しました: http://github.com/nfarina/simpledav

Google App Engine で実行するために Python で作成しましたが、他の言語でも同様の取り組みになると思います。全体として、約 2 ページのコードです。

次のメソッドを実装しました: OPTIONS、PROPFIND、MKCOL、DELETE、MOVE、PUT、GET。これまでのところ、Transmit と Cyber​​duck をテストしましたが、どちらもうまく機能します。

これが、WebDAV サーバーの実装に関心を持っている次の人に何らかのガイダンスを提供できることを願っています。これは難しいプロトコルではありません。「深さ」や「コレクション」などの抽象化された言語が非常に密集しているだけです。

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

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

于 2010-09-23T19:43:11.523 に答える
2

たとえばTomcatでApacheJackrabbitを実行すると、WebDAVを提供し、アップロードされたファイルを保存するように構成できます。おそらく、それは有用なモデルになるか、計画された実装の十分な代替品になるでしょう。

WebDAVのApacheJackrabbitサポート

また、WebDAVサーバーをテストするための便利なツールであることがわかったBitKinexクライアント(30日間の無料トライアル)についても知っておくとよいでしょう。

BitKinexホームページ

于 2008-12-11T19:48:58.507 に答える
2

Web ベースの製品に webDAV サーブレットがあります。

私は Apache Jackrabbit がそれを実装するのに役立つことを発見しました。ただし、webDav は、クライアント側のサポートに関する深刻な PITA です。

多くのクライアントの実装は、その動作が大きく異なります。おそらく、いくつかの異なる種類のバグのある実装をサポートする必要があります。

いくつかの例: MS Vista は SSL 経由の認証のみをサポートします。

ほとんどの Windows ベースの webDAV クライアントは、webdav-server/let が sharepoint サーバーであると想定し、それに応じて動作します (したがって、webDAV プロトコルには従いません)。

この一例は、サーバーのルート (つまり、yourdomain.com/ ではなく yourdomain.com/where/webdav/should/live) で未認証の LOCK 要求を許可する必要があることです。そうしないと、MS で書き込みアクセスを取得できなくなります。ウィンドウズ。(これは、通常は server.com/servlets/paths/thelocation にある tomcat マシンでの深刻な PITA です)

MS Office のほとんどの (すべての?) バージョンは、webdav リンクに対して異なる応答をします。

私の要点は、webdav サポートを既存の製品に統合することは、予想よりもはるかに難しいということだと思います。可能であれば、jackrabbit webdavServer や apache mod_webdav などの (セミ) スタンドアロン webDAV サーバーを使用することをお勧めします。

于 2009-02-10T11:42:07.703 に答える
2

内部で WebDAV を使用して、一部のファイル共有のフォルダーベースのビューを、ファイアウォールの外側のクライアントに提供しています。これには IIS6 を使用しています。

基本的には、WebDAV 経由で利用できるようにする各ネットワーク ファイル システムにマップする IIS 内に仮想ディレクトリを作成することになります。「別のコンピューターにある共有」からのコンテンツを使用してセットアップします。ネットワーク ディレクトリの値には、共有への UNC パスを使用します。Index this resource 以外のすべてのオプションをオンにします。デフォルトのコンテンツ ページをすべて無効にします。Windows 統合認証をオンにします (これも SSL を使用してセットアップされています)。匿名へのアクセスを拒否し、認証されたユーザーへのアクセスを許可するようにルートを設定しました。ワイルドカード MIME マッピング (.* から application/octet-stream へ) もあります。IIS で WebDAV Web サービス拡張機能を有効にします。また、ユーザーの資格情報を渡すことができるように、アクセスする可能性のあるすべてのファイル サーバーにアクセス許可を委任するように Web サーバーをセットアップする必要があります。

Macintosh クライアントを使用している場合は、Darwin クライアント用に 401 から 403 エラーをマップする ISAPI フィルターも必要になる場合があります。Microsoft と Apple は、ディレクトリへの書き込み権限がない場合の対処方法について意見が分かれています。Apple は 401 (アクセスが拒否されました) エラーで資格情報を再送し続けますが、それを 403 (禁止) エラーに変換することで、これが発生しなくなります。デフォルトでは、Apple はアクセスするすべてのディレクトリに「ドット」ファイルを書き込みます。フィルターがない場合、書き込みアクセス権のないディレクトリをナビゲートすると、Finder がクラッシュします。必要に応じて、これのソース コードがあります。

これはすべて私の頭のてっぺんから外れています。私が何かを見逃している可能性があります(おそらく?)。問題が発生した場合は、私の Web サイトの連絡先情報からお気軽にご連絡ください。

于 2008-12-11T19:56:03.987 に答える
1

私は、OS X の Finder WebDAV サポートが非常に厄介であることを発見しました。読み取り/書き込みサポートを取得するには、他のビットに加えて LOCK を実装する必要があります。

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

したがって、進行状況バーが表示されるかどうかはわかりません。私が扱っていたファイルは十分に小さかったので、それらからの読み取り/コピーは事実上瞬時に行われました。Finder を使用して大きなファイルをコピーすると、おそらくプログレス バーが表示されると思います。他の種類のマウントされた共有でも表示されます。

于 2008-12-12T01:33:25.317 に答える
0

PyFileServer プロジェクトを取り上げたWSGI WebDAV http://code.google.com/p/wsgidav/の別のオープン ソース プロジェクトを次に示します。

于 2009-07-14T16:09:43.167 に答える