Как я могу прочитать большие объемы данных CGI через POST в Rebol3?

Я пытаюсь загрузить изображение с помощью POST. Затем на сервере, чтобы получить данные POST, я использую:

data: read system/ports/input

... но похоже, что данные урезаны.

Кажется, что нет определенной границы, где данные усекаются. Я загружаю изображения в диапазоне примерно от 15-200 кБ, и результирующие данные имеют длину от нескольких сотен до нескольких десятков кБ, поэтому нет искусственной границы, такой как 32 000 байтов.

У кого-нибудь есть опыт получения данных из POST?

2 ответа

Действие чтения на system/ports/input работает на низком уровне, как поток. Непрерывное чтение вернет частичные данные, пока не будет достигнут конец ввода. Проблема в том, что system/ports/input вернет ошибку в конце ввода вместо ни одного! или пустая строка.

Следующий код работает для меня, чтобы прочитать большой ввод POST:

image: make binary! 200'000
while [
    not error? try [data: read system/ports/input]
][
        append image data
]

С r3-64-view-2014-02-14-1926d8.exe я использовал

while [
    all [
       not error? try [data: read system/ports/input]
       0 < probe length? data
    ]
][
    append image data
]
print length? image

И сделал

D:\own\Rebol>r3-64-view-2014-02-14-1926d8.exe read-img.r < r3-64-view-2014-02-14-1926d8.exe > err.txt

и получил

.
.
16384
16384
16384
2048
0
1181696
Другие вопросы по тегам