【发布时间】:2017-02-09 17:36:44
【问题描述】:
我有一个包含文本输入和文件输入的表单。无论如何要在提交时将其推送到套接字上?
如果我像这样添加它
params.image = $("#new_post_image")[0].files[0]
我的参数在频道中是这样的
%{image: %{}, title: "image title"}
【问题讨论】:
-
看起来 Phoenix 的 Socket 使用
JSON.stringify编码要发送的数据,而JSON.stringify将File编码为{}。我能想到的一种方法是使用FileReader.readAsDataURL将文件读取为DataURL,然后在服务器上对其进行解码,但这似乎是一种黑客行为。readAsText将不起作用,因为它会弄乱二进制文件,readAsArrayBuffer读入ArrayBuffer,虽然您可以使用stackoverflow.com/questions/9267899/…,但它也不能直接发送到JSON.stringify,但这对我来说又像是一个黑客。 -
这是一个非常重要的问题。我在基本相同的事情上苦苦挣扎-通过通道上传文件,JS限制是它不知道文件的路径,这对
arc至关重要。我会检查@Dogbert 的建议。 -
@Dogbert 你有没有遇到过这个——有什么更新吗?
-
我已经用phoenix做了一个文件系统,最好的办法是用put方法(REST)上传文件,然后在channel上push处理文件
-
我想知道通过套接字推送文件的用例。您可以将文件上传到 s3 并通过套接字推送指针。如果您坚持通过套接字发送,请将文件转换为二进制文件并将其下推。我推荐前者。