Arrays 将drakma http请求数组写入文件

Arrays 将drakma http请求数组写入文件,arrays,stream,common-lisp,Arrays,Stream,Common Lisp,我想做的是: 获取(drakma:http请求“someURL.jpg”)的输出并将其写入文件。输出由一个字节数组组成 我想到的是: (with-open-file (my-stream "thing.jpg" :direction :output :element-type 'binary :if-does-not-exist :

我想做的是: 获取
(drakma:http请求“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。 如果您想要任何其他信息或发现我的问题不清楚,请立即询问:)

编辑: 问题在于:元素类型,它应该是“无符号字节”。 您可以在下面的公共Lisp Hyper Spec中找到关于:元素类型的不同可能性的信息。除此之外,一切都是正确的


注:我无法回答,因为我的声誉太低。

正如Xach所说,最好使用
'(无符号字节8)
(或者创建一个类型定义,例如
(deftype binary()'(无符号字节8))

此外,您可能可以用调用
写入序列

来替换数组上的循环并逐字节写入,最好是
(无符号字节8)