我想做的是:获取(drakma:http-request "someURL.jpg")的输出并将其写入一个文件。输出由一个字节数组组成。
我的想法是:
(with-open-file (my-stream "thing.jpg"
:direction :output
:element-type 'binary
:if-does-not-exist :create
:if-exists :supersede)
(let ((content (drakma:http-request "someURL.jpg")))
(loop for i across content do
(write-byte i my-stream))))我得到的错误是:
debugger invoked on a SIMPLE-ERROR in thread #<THREAD "initial thread" RUNNING
{1002978FB1}>:
could not find any output routine for :FULL buffered BINARY我使用SBCL 1.0.49。如果您想要任何其他信息或发现我的问题不清楚,那么请问:)。
编辑:问题出在:element-type,它应该是'unsigned-byte‘。你可以在open下的Common Lisp Hyper Spec找到关于:element-type不同可能性的信息。除此之外,一切都是正确的。
PS。我不能回答,因为我的名声太低了。
发布于 2011-08-02 18:43:52
正如Xach所说,你最好使用'(unsigned-byte 8) (或者做一个类型定义,比如(deftype binary () '(unsigned-byte 8)))。
此外,您还可以使用对write-sequence的调用来替换数组上的循环和逐字节写入
https://stackoverflow.com/questions/6885504
复制相似问题