我知道这是一个问题,并在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 /api/v1/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 /api/v1/books</title>
应该是什么错误?
答案 0 :(得分:0)
“curl:(6)无法解析主机:multipart”表示curl认为“multipart”是一个URL。我怀疑它是这样做的,因为你没有在该命令行中使用“真正的”双引号(ascii代码34),而是使用一些特殊的unicode。
file =之前的双引号看起来不同 - 并且正确。
(正如@mhawke所提到的那样,设置Content-Type是完全没必要的,因为curl在使用-F时默认已经这样做了)