Emacs Lisp-如何通过HTTP传输二进制文件?
最近,我一直在尝试使用Elisp通过HTTP请求与本地CouchDB数据库通信。发送和接收JSON工作得很好,但当我尝试将附件上载到文档时遇到了一些障碍。在CouchDB教程中,他们使用此curl命令上载附件: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
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请求数据中
;然而,这并没有起作用。我认为它只需要文本编码的数据。你有什么想法吗?终于试过了。很抱歉迟了回复!很有魅力谢谢!