【erlang】文件传输小技巧

2019-05-09  本文已影响0人  夏澪

前言

我以前的文章有提到过 http 请求是如何去传输文件的。目前的需求是传输一个 png 图片文件, png文件一般是比较小的如果再用原来的方法,未免有牛刀杀鸡之感。

实现

有一个比较常见的实现是:将文件转化为 binary, 那之后,进行一次 base64 编码。

错误情况

在这个过程中,我也尝试过直接传输 binary 一类的方法,但是 http 请求之后,收到的结果无一例外和原先是不符合了的。推测是传输过程中进行了一定的编码操作。

代码

{ok, Bin} = file:read_file(FileRoot),
FileBin = base64:encode(Bin)

将上面的 FileBin 作为 json 的 value 之一即可。erlang 的实现有一个优秀之处在于,读取 binary 的时候,会忽略文件的名字。其他语言的实现中 binary 前几位会存储文件名,会导致无法直接将结果转回为文件格式

上一篇 下一篇

猜你喜欢

热点阅读