Parsing 对上载的文件进行操作

Parsing 对上载的文件进行操作,parsing,file-upload,elixir,phoenix-framework,Parsing,File Upload,Elixir,Phoenix Framework,我正在尝试按如下方式解析上载的文件: lib/thingy\u web/controllers/things\u controller.ex def create(conn,%%“data”=>%Plug.Upload{content_type:“application/octet stream”,filename:basename,path:dirname})do things_params=dirname/“basename” |>File.stream! |>NimbleCSV.RFC41

我正在尝试按如下方式解析上载的文件:

lib/thingy\u web/controllers/things\u controller.ex

def create(conn,%%“data”=>%Plug.Upload{content_type:“application/octet stream”,filename:basename,path:dirname})do
things_params=dirname/“basename”
|>File.stream!
|>NimbleCSV.RFC4180.parse_流
|>Enum.map(&AllThings.create_things_params/1)
|>Enum.map(&AllThings.create_things/1)
康涅狄格州
|>put_状态(:已创建)
结束
但是,当我尝试使用测试文件发布帖子时:

curl-F'data=@/root/test'http://localhost:4000/api/thing
我得到一个错误:

[debug]使用ThingyWebWeb.ThingsController.create进行处理/2
参数:%%{“data”=>%Plug.Upload{content_type:“application/octet stream”,filename:“test”,path:“/tmp/Plug-1514/multipart-1514490176-65282591343221-1”}
管道:[:api]
[信息]在55毫秒内发送500
[错误]#运行ThingyWeb的PID。终结点已终止
服务器:本地主机:4000(http)
请求:POST/api/thing
**(退出)引发了一个异常:
**(File.Error)无法流式传输“/tmp/plug-1514/multipart-1514490176-65282591343221-1/test”:不是目录
(elixir)lib/file/stream.ex:79:Enumerable.file.stream.reduce/3中的匿名fn/2
(elixir)lib/stream.ex:1270:stream.resource/3中的匿名fn/5
(elixir)lib/stream.ex:806:stream.do_transform/8
/tmp/plug-1514/
的后续检查表明,它确实是一个空目录


上载的文件是否是短期的,并且可以配置为长期的,或者我在这里遗漏了什么?

path
包含上载文件的完整路径
filename
只是用户在浏览器中选择的文件名(在本例中为
curl
);上载的文件未使用该名称存储。您只需将
路径
传递到
File.stream/1

things_params =
  path
  |> File.stream!
  |> ...

path
包含上载文件的完整路径
filename
只是用户在浏览器中选择的文件名(在本例中为
curl
);上载的文件未使用该名称存储。您只需将
路径
传递到
File.stream/1

things_params =
  path
  |> File.stream!
  |> ...

您能否尝试将
path:
的值传递给
File.stream/1
?非常感谢,这样做了-请重新查找
/tmp/plug-1514/
h file.stream中丢失的文件/1
显示一个带有基名称的文件路径,我可以问一下它是如何工作的吗?您能否尝试将
path:
的值传递给
file.stream/1
?非常感谢,这样做了-请重新查找
/tmp/plug-1514/
h file.stream中丢失的文件/1
显示带有基名称的文件路径,请问这是如何工作的?