简体   繁体   English

Filepond提取base64反应js

[英]Filepond extracting base64 react js

Trying to get a base64 from image upload and send it to the server.尝试从图像上传中获取 base64 并将其发送到服务器。 with other values, i can get the value of the hidden inputs.使用其他值,我可以获得隐藏输入的值。 Api is configured to take 2 files at a time, so i cant process the uploads separately at this point Api 配置为一次获取​​ 2 个文件,因此我此时无法单独处理上传

Having trouble mapping the 'data' from the upload image's value i have tried simple mapping methods but still failing.从上传图像的值映射“数据”时遇到问题,我尝试了简单的映射方法,但仍然失败。

My code below我的代码如下

    import React, { Component } from 'react';
    import {connect} from 'react-redux'
    import {Button} from 'antd'
    import IntlMessages from '../utility/intlMessages';
    import authActions from '../../redux/auth/actions'
    import { apiUrl } from '../../config';

    import { FilePond, registerPlugin } from 'react-filepond';
    import 'filepond/dist/filepond.min.css';
    import FilePondPluginImagePreview from 'filepond-plugin-image-preview';
    import FilePondPluginImageExifOrientation from 'filepond-plugin-image-exif-orientation';
    import FilePondPluginImageTransform from 'filepond-plugin-image-transform';
    import FilePondPluginFileEncode from 'filepond-plugin-file-encode';
    import 'filepond-plugin-image-preview/dist/filepond-plugin-image-preview.min.css';

    registerPlugin(FilePondPluginImagePreview, 
    FilePondPluginImageExifOrientation, FilePondPluginImageTransform, FilePondPluginFileEncode);

    const { kycUploadDocs } = authActions;

    class FilePondCompnent extends Component {

    constructor(props) {
    super(props);

    this.state = {

      files: [],
      base64files: []
    };
     }
     handleFilesUpdate() {

    let munei = document.querySelector('.filepond--file-wrapper');


    if(this.pond.getFiles().length === 2) {
      const input = munei.querySelectorAll('input[type="hidden"]')[0]
      console.log(input.value)

      base64map => {
        this.setState({
          base64files: input.value.map(req => req.data)
        });
      }


    }

  }
  handleInit() {
    console.log("FilePond instance has initialised", this.pond);
  }

  render() {
    return (
      <div className="munei">
        {/* Pass FilePond properties as attributes */}
        <FilePond
          ref={ref => (this.pond = ref)}
          files={this.state.files}
          allowMultiple={true}
          maxFiles={2}
          instantUpload={false}
          allowRevert={false}
          allowFileEncode={true}
          // oninit={() => this.handleInit()}
          onupdatefiles={fileItems => {
            // Set currently active file objects to this.state
            this.setState({
              files: fileItems.map(fileItem => fileItem.file)
            });
            this.handleFilesUpdate()
          }}
        />
      </div>
    );
  }
}
    export default connect((state, ownProps) => ({
  // isLoading: state.App.get('isLoading'),
  // balances: state.Funds.get(ownProps.fund+'_balances'),
}),
{ kycUploadDocs }
)(FilePondCompnent);

The latest version of the file encode plugin adds two methods to the file items. 最新版本的文件编码插件向文件项添加了两种方法。 getFileEncodeBase64String and getFileEncodeDataURL . getFileEncodeBase64StringgetFileEncodeDataURL Those should help achieve what you're trying to do without actually having to read the hidden file input elements. 这些应该有助于实现您要尝试执行的操作,而无需实际读取隐藏文件的输入元素。

See docs for further info: https://pqina.nl/filepond/docs/patterns/plugins/file-encode/ 请参阅文档以获取更多信息: https : //pqina.nl/filepond/docs/patterns/plugins/file-encode/

I installed and tryied to use file-encode pluggin(using vue-filepond) from filepond (see getEncodedData() method )but i get this error this.$refs.pond.getFileEncodeDataURL is not a function.我安装并尝试使用来自 filepond 的文件编码插件(使用 vue-filepond)(请参阅 getEncodedData() 方法)但我收到此错误this.$refs.pond.getFileEncodeDataURL is not a function。 the code:代码:

<template>
  <div>
    <FilePond
      name="test"
      ref="pond"
      allowFileEncode="true"
      required="false"
      allow-multiple="true"
      :max-files="maxFiles"
      class-name="my-pond"
      :label-idle="label"
      :capture-method="null"
      aallowImageTransform="true"
      imageTransformOutputQuality="30"
      imageTransformOutputMimeType="image/png"
      allowImageResize="true"
      imageResizeTargetWidth="150"
      imageResizeTargetHeight="88"
      imageResizeMode="cover"
      accepted-file-types="image/jpeg, image/png"
      v-on:init="handleFilePondInit"
    />
  </div>
</template>

<script>
//issue url https://github.com/pqina/vue-filepond/issues/234
// Import FilePond
import vueFilePond from 'vue-filepond'

// Import plugins
import FilePondPluginFileValidateType from 'filepond-plugin-file-validate-type/dist/filepond-plugin-file-validate-type.esm.js'
import FilePondPluginImagePreview from 'filepond-plugin-image-preview/dist/filepond-plugin-image-preview.esm.js'
import FilePondPluginFileEncode from 'filepond-plugin-file-encode/dist/filepond-plugin-file-encode.js'

// Import styles
import 'filepond/dist/filepond.min.css'
import 'filepond-plugin-image-preview/dist/filepond-plugin-image-preview.min.css'

// Create FilePond component
const FilePond = vueFilePond(
  FilePondPluginFileValidateType,
  FilePondPluginImagePreview,
  FilePondPluginFileEncode
)

export default {
  props: {
    maxFiles: { type: Number, default: 1 },
    label: { type: String, required: true },
  },

  methods: {
    handleFilePondInit: function () {
      console.log('FilePond has initialized new')

      // example of instance method call on pond reference
      this.$refs.pond.getFiles()
    },
    getPondFiles() {
      return this.$refs.pond.getFiles()
    },
    addFiles(blob) {
      this.$refs.pond.addFile(blob)
    },
    getEncodedData() {
      this.$refs.pond.getFileEncodeDataURL()
    },
  },
  components: {
    FilePond,
  },
}
</script>
<style>
.filepond--file-action-button {
  cursor: pointer;
}
</style>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM