Я пытался создать инструмент CLI в Crystal для использования send-anywhere.com
из командной строки.Не удалось отправить несколько файлов с curl на send-anywhere.com
Отправка multipart не встроена в Crystal, но, прежде чем писать свои собственные, я подумал, что попытаюсь использовать cURL, чтобы увидеть, как именно я должен это сделать, но я даже не могу заставить его работать с cURL!
Проблема заключается в том, что при отправке более одного файла с cURL их сервер видит только 1 входящий файл, они видят общую длину, но терпят неудачу на 50%, так как они ожидали только одного файла.
Что убивает меня, так это то, что он работает в браузере, у меня открыт сетевой инспектор, и я не вижу разницы с моим запросом cURL. Я попытался настроить заголовок Expect на 100-continue, я их сравнил, но я не вижу, что может заставить его работать с браузером, а не завивать.
Вот команда, которую я пытался с Curl все с тем же результатом, что сервер в конечном итоге видеть только один файл поступающего не 2.
Для тестирования я использовал несколько копий общего файла лицензии.
curl -F [email protected] -F [email protected] https://...their.weblink...
Я видел в инспекторе, что Chrome называет имя файла = "файл []" в Content-Disposition, так что я пробовал сам (тот же результат):
curl -F file[][email protected] -F file[][email protected] https://...their.weblink...
Я также попробовал эти 2 команды, используя -H "Expect: 100-continue"
с таким же результатом.
На данный момент я рассердился и подумал, что я попробую сам, возможно, CURL не может сделать это правильно (очень маловероятно, и у меня гораздо больше шансов, что я что-то сделаю неправильно).
Так, прежде чем писать с нуля, я попробовал реализацию, которая была использована в Телеграмма бот посмотреть здесь: https://github.com/hangyas/TelegramBot/blob/b3fcbbb621bd669bbafe9f3e91364702d06d1e10/src/TelegramBot/http_client_multipart.cr
Это довольно простой, но я все еще получаю один и тот же вопрос. Только первый файл распознается.
Примечание: при отправке только одного файла все работает нормально и при реализации cURL, и в Crystal.
Я схожу с ума, в чем разница между браузером, который работает, и двумя другими? Что я не вижу?
Я не ищу реализацию, но только для того, чтобы кто-то мог указать, что я пропустил, что бы распознать несколько файлов правильно?
Замечание mutlipart должно войти в стандартную библиотеку довольно скоро, см. Https: // github.com/crystal-lang/crystal/pull/2967 –
@ JonneHaß Да, я знаю, что я некоторое время следил за этой проблемой! Но я даже не уверен, что он исправит эту проблему. – ItsASecret
Я не получаю этот сайт, он просто ничего не делает для меня, когда я добавляю файл (при условии, что я попробовал правильный сайт, и вы просто забыли тире в домене). –