1

我有一个问题:我需要从 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 上传文件。问题出在哪里?

4

2 回答 2

0

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

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

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

于 2014-01-09T02:48:26.873 回答
0

里面是什么Req:post_param("file")

您假设它是文件的路径:您检查过 的值File吗?

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

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

将文件留在临时位置也可能是一个坏主意,您最好找到一个更合适的位置来存储它们。

于 2014-01-08T16:04:08.063 回答