【问题标题】:Phoenix Channels how to push a file through socketPhoenix Channels如何通过套接字推送文件
【发布时间】:2017-02-09 17:36:44
【问题描述】:

我有一个包含文本输入和文件输入的表单。无论如何要在提交时将其推送到套接字上?

如果我像这样添加它

params.image = $("#new_post_image")[0].files[0]

我的参数在频道中是这样的

%{image: %{}, title: "image title"} 

【问题讨论】:

  • 看起来 Phoenix 的 Socket 使用JSON.stringify 编码要发送的数据,而JSON.stringifyFile 编码为{}。我能想到的一种方法是使用FileReader.readAsDataURL 将文件读取为DataURL,然后在服务器上对其进行解码,但这似乎是一种黑客行为。 readAsText 将不起作用,因为它会弄乱二进制文件,readAsArrayBuffer 读入ArrayBuffer,虽然您可以使用stackoverflow.com/questions/9267899/…,但它也不能直接发送到JSON.stringify,但这对我来说又像是一个黑客。
  • 这是一个非常重要的问题。我在基本相同的事情上苦苦挣扎-通过通道上传文件,JS限制是它不知道文件的路径,这对arc至关重要。我会检查@Dogbert 的建议。
  • @Dogbert 你有没有遇到过这个——有什么更新吗?
  • 我已经用phoenix做了一个文件系统,最好的办法是用put方法(REST)上传文件,然后在channel上push处理文件
  • 我想知道通过套接字推送文件的用例。您可以将文件上传到 s3 并通过套接字推送指针。如果您坚持通过套接字发送,请将文件转换为二进制文件并将其下推。我推荐前者。

标签: elixir phoenix-framework


【解决方案1】:

我认为这种方法基本上是错误的。相反,文件上传应该由多部分表单上传处理,然后应该返回一个文件 ID,然后您可以将该 ID 附加到表单,以便它保留引用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-27
    • 1970-01-01
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    • 2021-09-15
    相关资源
    最近更新 更多