最近,我一直在尝试使用Elisp通过HTTP请求与本地CouchDB数据库进行通信。发送和接收JSON很有效,但是当我尝试将附件上传到文档时,我遇到了一些障碍。在CouchDB教程中,他们使用此curl命令上传附件:
curl -vX PUT http://127.0.0.1:5984/albums/6e1295ed6c29495e54cc05947f18c8af/artwork.jpg?rev=2-2739352689 \
--data-binary @artwork.jpg -H "Content-Type:image/jpg"
有谁知道如何使用内置的url
包来实现这一目标?我知道可以使用多部分MIME请求进行上传。关于它的emacs-request
手册中有a section。但我也读到CouchDB不支持multipart/form-data
作为其公共API的一部分,即使Futon在引擎盖下使用它。
答案 0 :(得分:2)
我认为您需要使用url-retrieve
并将url-request-method
绑定到呼叫周围的"PUT"
。
您还需要将url-request-data
绑定到您的数据:
(let ((url-request-data (with-temp-buffer
(insert-file-contents "artwork.jpg")
(buffer-substring-no-properties (point-min) (point-max)))))
(url-retrieve "http://127.0.0.1:5984/albums/6e1295ed6c29495e54cc05947f18c8af/artwork.jpg?rev=2-2739352689"))
请参阅
您也可以通过阅读the sources找到启发。