2014-09-17 11 views
3

Я пытаюсь загрузить изображение с помощью POST. Затем на сервер, чтобы получить данные POST, я использую:Как читать большие объемы данных CGI через POST в Rebol3?

data: read system/ports/input 

... но мне кажется, что данные будут усечены.

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

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

+0

@rebolek Я видел ваш вопрос в чате и решил ответить на него здесь. Я совершенно новый пользователь и не имею доступа к чату. –

+0

благодаря вашему фантастическому отклику теперь у вас достаточно репутации для участия в чате :) – rebolek

ответ

4

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

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

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

Спасибо! Я попробую. – rebolek

+0

Итак, я пробовал это, и, к сожалению, у меня есть другой опыт. READ на 'system/ports/input' не выдает ошибку, но застревает в ожидании данных и не отключается. – rebolek

+0

Какую версию и какую ОС вы используете? Я получил пустую строку в конце; Смотри ниже. – sqlab

1

с r3-64 ракурса-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 
+0

Не удается найти эту сборку, но я попробовал [последнюю версию 64-разрядной сборки Atronix Windows] (http://atronixengineering.com/r3/downloads/r3-64-view.exe) для Windows 7 Professional и Apache v2. 4.3.0 (32-бит). Эта комбинация работает для меня. –