来自post param的erlang文件

时间:2014-01-08 13:42:06

标签: file file-io erlang chicagoboss

我有一个问题: 我需要从ChicagoBoss的post param中读取文件。我在尝试:

upload_file('POST', []) ->
    File = Req:post_param("file"),
    {ok,Data} = file:read_file(File),

有错误:

{{badmatch,{error,enoent}}

当我尝试检查文件时:

case filelib:is_file(File) of
        true -> {output, "ok"};
        false -> {output, "error"}
end.

我有error输出。 我正在尝试使用Postman上传文件。问题在哪里?

2 个答案:

答案 0 :(得分:0)

Req:post_param("file")内有什么?

您认为它是文件的路径:您是否检查了File的值?

无论如何,你可能正在寻找Req:post_files/0

[{_, _FileName, TempLocation, _Size}|_] = Req:post_files(),
{ok,Data} = file:read_file(TempLocation),

将文件放在它的温度位置也可能是一个坏主意,你最好找一个更适合存放它们的地方。

答案 1 :(得分:0)

enoent是“找不到目录”的posix错误代码。

http://www.erlang.org/doc/man/file.html#del_dir-1

此外,您的代码允许人们从磁盘读取任意文件。这最终会导致服务器攻击。