2017-07-27 20 views
0

J'essaie de comprendre comment copier un fichier sur un serveur WebDAV distant vers un autre emplacement sur ce même serveur en utilisant Guzzle. J'ai actuellementComment copier un fichier distant avec Guzzle dans WebDAV?

$client->request('COPY', 'file1.txt', [ 
    'Destination' => 'file2.txt', 
    'Overwrite' => 'T', 
]); 

Cette méthode me donne une réponse 400

Client error: 'COPY http://example.com/remote.php/dav/files/admin/file1.txt' resulted in a '400 Bad Request' response: 

file1.txt existe et ce n'est pas un problème d'autorisations. Je suis quelques docs * et essaye de deviner mon chemin pour le faire fonctionner car je ne peux trouver aucun exemple en ligne. Est-ce que quelqu'un peut me dire ce que j'ai besoin de changer?

* par exemple https://docs.nextcloud.com/server/12/developer_manual/client_apis/WebDAV/index.html

Répondre

0

Je trouve la réponse. Les paramètres Destination et Overwrite doivent être envoyés dans les en-têtes.

$headers = [ 
    'Destination' => 'file2.txt', 
    'Overwrite' => 'T', 
]); 
$client->request('COPY', 'file1.txt', [ 
    'headers' => $headers, 
]); 

Il semble y avoir un vrai manque de documentation sur WebDAV.