Nextcloud

[Tips] NextcloudへのcurlアップロードでMD5ハッシュ検証する方法

curlを使用してNextcloudにWebDAVアップロードする際、リクエストヘッダーに「X-Hash」を付与することで、レスポンスにハッシュ値を含めることができます。
手元のファイルとハッシュ値を比較すれば、ファイル転送の整合性を確認できます。

確認方法

検証環境: Nextcloud 31

curlリクエスト時に「X-Hash: md5」ヘッダーを付与してアップロードすると、レスポンスヘッダーでハッシュ値を返すようになります。

以下の例では、X-Hash: md5 を指定して、abc.pdf というファイルを Nextcloud へアップロードしています。

$ curl -k -u "{USERID}:{PASSWORD}" -H "X-Hash: md5" -v -T abc.pdf \
  "https://{FQDN}/remote.php/dav/files/{USERID}/abc.pdf"

-- レスポンス途中省略 --

< X-Hash-MD5: 6bba93ada9db2223b5bc3d8c03dc8743

レスポンスヘッダー「X-Hash-MD5」にハッシュ値が返されます。

手元のファイルのMD5と一致すれば、転送が正常に完了したことを確認できます。

$ md5sum abc.pdf
6bba93ada9db2223b5bc3d8c03dc8743  abc.pdf

X-Hashヘッダーの仕様

X-Hashヘッダーの値には、md5, sha1, sha256 が指定可能です。

Nextcloud は次のいずれかの名前のレスポンスヘッダーでハッシュ値を返します。
X-Hash-MD5, X-Hash-SHA1, X-Hash-SHA256

指定値レスポンスヘッダー
md5X-Hash-MD5
sha1X-Hash-SHA1
sha256X-Hash-SHA256

詳細は公式ドキュメントを参照してください。
https://docs.nextcloud.com/server/stable/developer_manual/client_apis/WebDAV/basic.html#special-headers

以上、現場からお届けしました。