Emacs Lisp-如何通过HTTP传输二进制文件?

Emacs Lisp-如何通过HTTP传输二进制文件?,http,emacs,couchdb,elisp,file-transfer,Http,Emacs,Couchdb,Elisp,File Transfer,最近,我一直在尝试使用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 "Conten

最近,我一直在尝试使用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请求
手册中有关于它的信息。但是我也读到CouchDB不支持将
多部分/表单数据作为其公共API的一部分,即使Futon在幕后使用它。

我认为您需要使用
url请求方法,并将其绑定到
“PUT”
。 您还需要将
url请求数据
绑定到您的数据:

(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"))
另请参见


阅读也会给你带来启发。

我已经试过了;但是,我不确定将
url请求数据设置为什么。我尝试以二进制形式读取文件,并将其放入
url请求数据中
;然而,这并没有起作用。我认为它只需要文本编码的数据。你有什么想法吗?终于试过了。很抱歉迟了回复!很有魅力谢谢!