卷曲后图像到sinatra api失败

时间:2016-01-14 11:19:14

标签: curl sinatra

我知道这是一个问题,并在stackoverflow上得到了回答,但我尝试了很多没有帮助,不知道如何调试它。

我的命令:

curl -i -X POST -H “Content-Type: multipart/form-data” -F "file=/Users/william/Desktop/test.png" http://localhost:3000/api/v1/books

终端输出:

    curl: (6) Could not resolve host: multipart
HTTP/1.1 500 Internal Server Error 
Content-Type: text/html
Content-Length: 170873
Server: WEBrick/1.3.1 (Ruby/2.1.5/2014-11-13)
Date: Thu, 14 Jan 2016 11:19:40 GMT
Connection: Keep-Alive

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  <meta name="robots" content="NONE,NOARCHIVE" />
  <title>NameError at &#x2F;api&#x2F;v1&#x2F;books</title>
  <style type="text/css">
    html * { padding:0; margin:0; }
    body * { padding:10px 20px; }
    body * * { padding:0; }

不确定如何解决这个问题?我用浏览器测试了很好的工作:

<form action='/api/v1/books' enctype="multipart/form-data" method='POST'>
    <input name="file" type="file" />
    <input type="submit" value="Upload" />
</form> 

有任何帮助吗?谢谢!

编辑在路径前添加@使上传图片正常工作,但仍然会出现输出错误。 这是一句话:<title>NameError at &#x2F;api&#x2F;v1&#x2F;books</title>应该是什么错误?

1 个答案:

答案 0 :(得分:0)

“curl:(6)无法解析主机:multipart”表示curl认为“multipart”是一个URL。我怀疑它是这样做的,因为你没有在该命令行中使用“真正的”双引号(ascii代码34),而是使用一些特殊的unicode。

file =之前的双引号看起来不同 - 并且正确。

(正如@mhawke所提到的那样,设置Content-Type是完全没必要的,因为curl在使用-F时默认已经这样做了)