使用客户端clojurescript / re-frame app读取文件

问题描述 投票:1回答:1

我正在编写一个客户端应用程序,该应用程序应读取文件,转换其内容,然后导出结果。为此,我决定重新框架。

现在,我刚刚开始将脑袋包裹在Re-Frame上,并完成了cloujurescipt的工作:

[在我的视图函数中的任何地方,只要通过简单的HTML输入选择了新文件,就发送此消息。

[:input {:class "file-input" :type "file"                                 
         :on-change #(re-frame/dispatch                                   
           [::events/file-name-change (-> % .-target .-value)])}]

[我得到的是类似C:\fakepath\file-name.txt的东西,其中falsepath实际上是其中的一部分。

我的事件处理程序当前仅拆分名称,并保存我在上面输入的内容所订阅的文件名,以显示所选文件。

(re-frame/reg-event-db                       
  ::file-name-change                       
   (fn [db [_ new-name]]                          
     (assoc db :file-name (last (split new-name #"\\"))))) 

此外,我想读入文件以稍后在本地对其进行处理。假设我只是更改on-change操作和事件处理程序以执行此操作,我将如何执行此操作?

我搜索了一段时间,但几乎找不到。唯一出现在其他框架之类的地方,但是我不想为每个新问题引入新的依赖关系。

io clojurescript re-frame
1个回答
0
投票

我假设您想使用HTML5 API在客户端中完成所有操作(例如,没有实际上传到服务器)。>>

MDN的本指南可能会派上用场:https://developer.mozilla.org/en-US/docs/Web/API/File/Using_files_from_web_applications

[似乎您可以订阅用户选择文件时触发的事件,然后可以获得所述文件的列表,并通过File API检查文件内容:https://developer.mozilla.org/en-US/docs/Web/API/File

在您的情况下,您需要将事件中对FileList对象的引用保存在某个地方,以后再使用。

© www.soinside.com 2019 - 2024. All rights reserved.