2016-01-14 5 views
0

Я знаю, что это вопрос, на который был задан вопрос и ответил на stackoverflow, но я попробовал много не помогло, не уверен, как его отладить.curl post image to sinatra api fail

моя команда:

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> 

Любая помощь? благодаря!

EDIT Добавить @ перед дорогой сделать загрузку изображений, но все равно получить ошибку вывода. Это строка: <title>NameError at &#x2F;api&#x2F;v1&#x2F;books</title> какая возможная ошибка?

+0

При указании '' -F' вариант curl' будет установлен заголовок 'Content-Type: multipart/form-data', поэтому вам не нужно. – mhawke

+0

Спасибо! Я только что проверил -F как форму! –

ответ

0

«curl: (6) Не удалось разрешить хост: multipart» означает, что curl считает, что «multipart» является URL-адресом. Я подозреваю, что это делает это, потому что вы не используете «настоящие» двойные кавычки (ascii-код 34) в этой командной строке, а некоторые специальные юникодные.

Двойная цитата перед файлом = выглядит по-другому - и правильно.

(и как @mhawke упоминалось, установив Content-Type, как это совершенно не нужно, как завиток делает это уже по умолчанию, когда -F используется)