2013-08-02 2 views
2

Я работаю над методом PUT API, который будет обновлять объект, определенный идентификатором в URL. Мне нужно отправить файл и некоторые дополнительные данные для аутентификации пользователей (например, публичный ключ подписи и пользователя). Я кладезь, как я могу отправить файл:CURL cli PUT запрос - отправить данные и файл

curl -v -X PUT -T "file.epub" localhost:8080/api/book/?id=123 

И узнать, как я могу отправить данные

curl -v -X PUT --data test=abc localhost:8080/api/book/?id=123 

Но как я могу отправить файл и дополнительные поля данных?

ответ

2

Так же, как:

curl -X PUT -F [email protected] -F test=abc localhost:8080/api/book/?id=123 

Я предполагаю, что вы можете изменить свой API, так что вы можете загрузить файл, используя параметр, и в этом примере параметр называется file.

+0

Благодарим за быстрый ответ. Я не очень хорошо понимаю, что вы подразумеваете под «вы можете загрузить файл с помощью параметра, и в этом примере параметр называется файлом». Я не смогу инициировать загрузку файлов с пользовательского компьютера. Можете ли вы объяснить это более подробно? Благодарю. – Tamara

+0

Ну, параметр 'файл' будет сырым содержимым' file.epub'. –

+2

Я пробовал этот запрос PUT. Когда я обрабатываю данные с запросом в PHP-скрипте, я получил странные значения. Прежде всего, я получаю 18 параметров, пока я пропускаю только 2. Имя параметра, например: ------------------------------ e2ece971afa8 \ г \ nContent-Disposition: _form-данных; _name. И нет «тестового» параметра. В то же время с запросом curl -v -X PUT --data test = abc localhost: 8080/api/book /? Id = 123 Я могу получить параметр с правильным именем и правым значением. По-видимому, мы отправляем файл неверно для запроса PUT. – Tamara

0
curl -d "key1=value1" -d "key2=value2" -d @"/path/to/file" -X PUT your_url 

PUT не будет работать с "-F" (например, локон -X PUT -F [email protected] -F теста = а локальная: 8080/API/книги/ID = 123) в качестве " -F "подразумевает заголовок типа" multipart/form-data "(-H" Content-Type: multipart/form-data "), который не работает с запросами PUT.

Смежные вопросы