如何在Rebol3中通过POST读取大量CGI数据?

时间:2014-09-17 22:41:05

标签: http-post rebol rebol3

我正在尝试使用POST上传图片。然后在服务器上获取POST数据,我使用:

data: read system/ports/input

...但似乎数据被截断了。

似乎没有一些特定的边界数据被截断。我正在上传范围从cca 15-200kB的图像,结果数据是几百到几十kB长,所以没有像32'000字节那样的人工边界。

有没有人有从POST获取数据的经验?

2 个答案:

答案 0 :(得分:4)

system/ports/input上的阅读操作工作在较低级别,就像流一样。 连续读取将返回部分数据,直到达到输入结束。 问题是system/ports/input将在输入结束时返回错误而不是没有错误!或空字符串。

以下代码可供我阅读大型POST输入:

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

答案 1 :(得分:1)

使用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