Pergunta

Para um projeto atual, eu estava pensando em implementar WebDAV para apresentar um armazenamento de arquivos virtual que os clientes podem acessar. Eu só tenho feito pesquisas Google até agora, mas parece que eu posso fugir com a implementação de apenas dois métodos:

GET, PROPFIND

Eu acho que isso é ótimo. Eu estava apenas curioso embora. Se eu queria implementar o upload de arquivos via:

PUT

Eu não implementaram-lo, mas parece bastante simples. A minha única preocupação é se um medidor de progresso será exibida para o usuário se eles estão usando o padrão Vista Explorer ou OSX Finder.

Eu acho que eu estou procurando algumas histórias de pessoas experientes com WebDAV.

Foi útil?

Solução

Para muitos clientes WebDAV e até mesmo por apenas acesso de leitura, você também vai precisar de opções de suporte. Se você quiser apoiar upload, PUT, obviamente, é necessária, e alguns clientes (MacOS X?) Exigirá o apoio de bloqueio.

(btw, RFC 4918 é a fonte authorative de informações).

Outras dicas

Eu implementei a maior parte do protocolo WebDAV em cerca de um dia de trabalho: http://github.com/nfarina/simpledav

Eu o escrevi em Python para ser executado no Google App Engine, e eu espero que qualquer outra língua seria um esforço similar. Em suma, trata-se de duas páginas de código.

Eu implementei seguintes métodos: OPÇÕES, PROPFIND, MKCOL, apagar, mover, PUT, GET. Até agora eu testei Transmissão e Cyberduck e ambos grande trabalho com ele.

Esperamos que este pode fornecer algumas orientações para a próxima pessoa lá fora, interessados ??em implementar um servidor WebDAV. Não é um protocolo difícil, é apenas muito densa com a linguagem abstrata como 'profundidade' e 'coleções' e blá.

Aqui está a especificação: http://www.webdav.org/specs/rfc4918.html

Mas a melhor maneira de entender o protocolo é para assistir a um cliente interage com um servidor de trabalho. Eu costumava Transmit para se conectar ao servidor WebDAV do Box.net e monitorado o tráfego com Charles Proxy.

Um pouco tarde para a festa, mas eu tenho implementado a maior parte do protocolo WebDAV e posso dizer com confiança que você precisa para implementar a maior parte do protocolo.

Para o OS / X você vai precisar de classe-2 suporte WebDAV, que inclui bloqueio e desbloqueio (eu achei particularmente difícil de implementar plenamente o http If: cabeçalho, mas para localizador você só precisa de um pouco disso. )

Estas são algumas das minhas descobertas pessoais:

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

Espero que isso ajude

Se você executar Apache Jackrabbit sob, digamos, Tomcat, ele pode ser configurado para oferta WebDAV e armazenar arquivos enviados. Talvez que será um modelo útil, ou até mesmo um bom substituto suficiente para a implementação programada.

Apache Suporte Jackrabbit para WebDAV

Além disso, você pode querer estar ciente do cliente BitKinex (30 dias de teste gratuito), que eu encontrei para ser uma ferramenta útil para testar um servidor WebDAV.

BitKinex Página

Nós usamos WebDAV internamente para fornecer uma visão baseada em pastas de alguns compartilhamentos de arquivos para clientes fora do nosso firewall. Estamos usando IIS6 para isso.

Basicamente, tudo se resume a criar um diretório virtual no IIS que mapeia para cada sistema de arquivos de rede que você deseja tornar disponível através do WebDAV. Configurá-lo com o conteúdo vindo de "Um compartilhamento localizado em outro computador" - usar o caminho UNC para o compartilhamento para o valor de diretório da rede. Ligamos todas as opções exceto Índice este recurso. Desativar todas as páginas de conteúdo padrão. Ative a autenticação integrada do Windows (o nosso é configurado usando SSL também). Eu tenho a raiz configurado para negar acesso a anônimo e permitir o acesso a qualquer usuário autenticado. Também tem um mapeamento de MIME universal (. * A aplicação / octeto de fluxo). Habilitar a extensão de serviço da Web WebDAV no IIS. Você também precisa configurar o servidor web para delegar permissões para todos os servidores de arquivos que você pode estar acessando para que ele possa passar as credenciais do usuário.

Se você tem clientes Macintosh também pode ser necessário um filtro ISAPI que mapeia 401 a 403 erros para clientes Darwin. Microsoft e Apple discordam sobre como lidar com a situação quando você não tem permissão para gravar em um diretório. A Apple continua a reenviar as credenciais em um erro 401 (acesso negado), traduzindo-o a um erro 403 (proibido) mantém que isso aconteça. Por padrão Apple gosta de escrever um arquivo de "dot" para todos os diretórios que ele acessa. Navegando através de diretórios onde você não tem acesso de escrita vai acabar caindo no Finder, se você não tem o filtro. Eu tenho o código fonte para isso, se necessário.

Isto é tudo em cima da minha cabeça. É possível (provável?) Que eu possa ter perdido alguma coisa. Não hesite em contactar-me via e as informações de contato no meu site se você tiver problemas.

Temos um webDAV servlet em nosso produto baseado na web.

eu encontrei Apache Jackrabbit uma boa ajuda para implementá-lo. no entanto WebDAV é um P.I.T.A sério com o apoio do lado do cliente.

muitos implementação do cliente diferem amplamente em seu comportamento e você provavelmente terá que suportar vários tipos de implementações de escutas.

alguns exemplos: MS Vista suporta apenas a autenticação através de SSL

a maioria das janelas cliente WebDAV baseado assumir o seu webdav-server / let é um servidor SharePoint e vai agir em conformidade (portanto, não de acordo com o protocolo WebDAV)

Um exemplo disso é que você precisa para permitir e pedido de bloqueio não autenticado na raiz do seu servidor (ou seja yourdomain.com/ não yourdomain.com/where/webdav/should/live) então você não será capaz de obter gravação ace em MS Windows. (Esta é uma P.I.T.A sério em uma máquina tomcat onde seu material vive normalmete em server.com/servlets/paths/thelocation)

a maioria (todos?) Versões do MS escritório respondem diferente para ligações WebDAV.

eu acho que meu ponto é a integração de suporte a WebDAV para um produto existente pode ser muito mais difícil, então você esperaria. e se possível gostaria de aconselhamento para usar uma (semi) -standalone webDAV servidor, como jackrabbit webdavServer, ou apache mod_webdav

Eu encontrei o apoio do Finder WebDAV do OS X para ser realmente exigente. A fim de obter o apoio de leitura e gravação, você tem que implementar BLOQUEIO, além de outros pedaços.

Eu escrevi uma interface WebDAV para um banco de dados Postres, onde módulos python foram armazenados no banco de dados em uma estrutura de pastas semelhante hierárquico. Acessá-lo com cadáver funcionou bem, e IIRC um navegador janelas GUI trabalhou muito, mas do Finder se recusou a montar o compartilhamento como algo diferente de somente leitura.

Então, eu não sei se se daria uma barra de progresso. Os arquivos que eu estava lidando eram pequenos o suficiente para que uma leitura / cópia deles foi praticamente instantânea. Eu acho que uma cópia de um arquivo grande usando o localizador provavelmente daria uma barra de progresso - ele faz para qualquer outro tipo de parte montada

.

Aqui está um outro projeto de código aberto para WSGI WebDAV http://code.google.com/p/wsgidav/ onde eu peguei o projeto PyFileServer.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top