Есть железка на арме под линухом. Есть простейший веб-интерфейс на шелле. Нужно организовать загрузку файла в устройство через браузер. CGI-скрипт получает такой набор переменных:
А что это?
Эта строка постоянно меняется, даже если загружать один и тот же файл. Но она слишком короткая, чтоб в ней могло быть реальное содержимое.
Я, честно, пока вообще не понимаю, как именно происходит загрузка файла. Делает ли вёб-сервер всё сам, или же мне нужно запустить какую-то утилиту, чтоб принять файл?
Я внимательно прочитал http://www.ietf.org/rfc/rfc1867.txt, но всё равно мало что понял...
Есть такое предположение - присылаемая форма должна выглядеть примерно так:
> > > can anybody give me a hint if the Busybox httpd is capable of
> > > handling file uploads? Is "multipart/form-data" handled correctly?
> >
> > Unsupport.
В случае если Content-type является multipart/form-data (а при загрузке файлов это всегда так), то echo $POST_STRING выводит поле boundary из заголовка Content-type. По этому значению будет необходимо разбивать POST-данные для получения отдельных полей запроса.
А само тело POST-запроса должно передаваться скрипту на стандартный ввод.
А само тело POST-запроса должно передаваться скрипту на стандартный ввод.
Точно! У меня в скрипте был один read, а их надо было много сделать, чтоб весь входящий поток построчно прочитать. Спасибо!
Осталось разобраться, как вытащить пришедший бинарник.
Новая проблема: конструкция read + echo съедает некоторые символы из бинарника. Даж не знаю, что и делать. Ваять прогу на Си что-то не хочется...
Вот мой скрипт:
Проблема с tee - байты 0x00 заменяются на 0x0A. Надо искать что-то другое...
Верхний заголовок убрал с помощью sed -n '1,4d;p'
Для нижнего пока вариант sed '$d' раз 5 подряд.