CouchDB附件无法打开

Dav*_* J. 5 curl couchdb attachment binary-data

我从位于localhost:5984/categories/Jan 以下数据的文档开始 :

{
  "_id": "Jan",
  "_rev": "4-2c0b1c27daca6d2a3c375b0f879a8967",
  "name": "Jan",
}
Run Code Online (Sandbox Code Playgroud)

我想将pdf上传到此文档,因此我提供以下curl命令:

curl -vX PUT 'http://localhost:5984/categories/Jan/example.pdf?rev=4-2c0b1c27daca6d2a3c375b0f879a8967' -d@example.pdf -H "ContentType: application/pdf"
Run Code Online (Sandbox Code Playgroud)

我得到了这样的答复:

*   Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 5984 (#0)
> PUT /categories/Jan/example.pdf?rev=4-2c0b1c27daca6d2a3c375b0f879a8967 HTTP/1.1
> Host: localhost:5984
> User-Agent: curl/7.47.0
> Accept: */*
> ContentType: application/pdf
> Content-Length: 10944067
> Content-Type: application/x-www-form-urlencoded
> Expect: 100-continue
>
< HTTP/1.1 100 Continue
< Server: MochiWeb/1.0 (Any of you quaids got a smint?)
< Date: Thu, 11 Jan 2018 07:48:21 GMT
< Connection: close
* We are completely uploaded and fine
< HTTP/1.1 201 Created
< X-CouchDB-Body-Time: 0
< X-Couch-Request-ID: d509f366b8
< Server: CouchDB/2.1.1 (Erlang OTP/18)
< Location: http://localhost:5984/categories/Jan/example.pdf
< Date: Thu, 11 Jan 2018 07:48:23 GMT
< Content-Type: application/json
< Content-Length: 66
< Cache-Control: must-revalidate
<
{"ok":true,"id":"Jan","rev":"5-4ae0ca0bd54d63b9ac45e3e57785648d"}
Run Code Online (Sandbox Code Playgroud)

在我看来,这是一个成功的上传.但是,当我访问网址时 localhost:5984/categories/Jan/example.pdf,有两个问题:

  • 而不是在浏览器中打开,我被要求下载附件
  • 当我下载并打开附件时,它说无法读取数据.

除了pdf之外,其他内容类型也会发生这种情况(我也尝试过使用png).谁能让我知道可能会出错?谢谢.

Jua*_*uez 3

问题似乎是您在附件创建期间指定的ContentType标头。

正确的标头名称是Content-Type

卷曲命令应该是:

curl -vX PUT 'http://localhost:5984/categories/Jan/example.pdf?rev=4-2c0b1c27daca6d2a3c375b0f879a8967' -d@example.pdf -H "Content-Type: application/pdf"
Run Code Online (Sandbox Code Playgroud)