我测试了在 POST 请求中附加一个 STL 文件作为正文。配置:Windows 10、Postman(POST->二进制)、R 3.4.2。POST 请求的 R 代码如下所示:
#' @post /endpointname
function(req) {
rawstl = req$postBody # STL file is attached as Binary in Postman.
rawData1 = as.raw(unlist(lapply(rawstl, charToRaw)))
## E.g. 43 4f 4c 4f 52 3d ...
...
}
其输出与使用以下方法对 STL 文件进行直接二进制读取相同:
con = file(fileName, "rb")
rawData2 = readBin(con, "raw", n=100, size=1, endian="little")
但是,如果使用 Plumber 版本(上图),则会缺少一些部件。我认为原因可能是处理或引入行尾的方式,或者管道工的默认过滤器。
缺失值出现在 req$postBody 的元素之间:例如 while rawData2
hold [a, b, c, d, e, f, g],rawData1
hold [a, b, e, f]。上面函数中的 R 对象rawstl
的长度 > 1 并且缺失值出现在那里的子列表之间。
我玩了一段时间,但我不知道是什么坏了。