javascript - 从 filepond 对象实例获取数据

标签 javascript reactjs file filepond

我在我的 React 项目中有一个提交表单,我在其中使用 filepond API,因此用户可以向该表单提交文件

到目前为止,我只使用从文档中获取的标准 FilePond 组件。

   <FilePond ref={ref => this.pond = ref}
                      allowMultiple={true} 
                      maxFiles={4} 
                      oninit={() => this.handleInit() }
                      onupdatefiles={(fileItems) => {
                          // Set current file objects to this.state
                          this.setState({
                              files: fileItems.map(fileItem => fileItem.file)
                          });
                      }}>

                {/* Update current files  */}
                {this.state.files.map(file => (
                    <File key={file} src={file} origin="local" 
                 />
                ))}

            </FilePond>

我将整个请求发送到 java 中的后端 REST 服务器,因此我想发送信息类型、数据(base64 编码)和文件扩展名。

我通过在我的请求中创建一个对象数组来做到这一点

  result: this.state.files.map(file => ({
            "file": this.findFileTypeHandler(file.name), 
            "data": this.encodeFileHandler(file)
        }))
    }

在我的 encodeFileHandler 中,我需要一种方法将数据转换为 base64,但我在文件对象上看不到具有原始数据的属性。

有没有办法访问它,或者有人有更好的替代方案我可以使用吗?

here is an example of the properties available on the object

最佳答案

尝试 File encode plugin对于 filepond,它正在做你所需要的:

... it encodes a dropped file as a base64 string and stores the string in a hidden input field as a JSON string. It uses a JSON string so it can also add the file size, type, name and metadata.

用法( react ):
导入插件代码:

import FilePondPluginFileEncode from 'filepond-plugin-file-encode';

注册插件:

registerPlugin(FilePondPluginFileEncode);

更多详情 here

关于javascript - 从 filepond 对象实例获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54368351/

相关文章:

javascript - 我如何创建一个 3 嵌套的耐力条,它将从最后一个重新生成到第一个

javascript - 输入类型编号 : how to detect if value was incremented or decremented?

javascript - 从内屏幕返回到父屏幕

javascript - 无法使用 react 更改元素的值

python - 在 pyspark 中读取 TSV 文件

android - 在Android中,当应用程序在写入过程中发生崩溃时,文件会发生什么变化?

javascript - 如何向 YouTrack 工作流程中的某些操作添加基于组或角色的限制?

javascript - 按键上的 Angular js 文本 Angular 组件事件

javascript - 为什么 enzyme 在表中找不到 'tr'?

c++ - 在 C++ : strange performance issue 中读取文件的奇特方式