Как я могу прочитать большие объемы данных 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