【问题标题】:How can I read file content with react-dropzone?如何使用 react-dropzone 读取文件内容?
【发布时间】:2018-12-21 07:21:23
【问题描述】:

我正在尝试了解有关为即将进行的项目处理文件的更多信息。 react-dropzone 有没有一种方法可以在 onDrop 碰巧更改我正在上传的文件的内容时运行一个函数?例如,如果我要上传一个文字文档,上面写着“大家好”,我将如何将内容更改为“嗨尼克博士”?

在尝试进行更改之前,我尝试使用 filereader api 访问数据。我尝试在 async 函数的左大括号之后立即使用 filereader,但无法使其正常工作。

import React from 'react';
import Dropzone from 'react-dropzone';
import { graphql } from 'react-apollo';
import gql from 'graphql-tag';

const FileUpload = ({
    children, disableClick, channelId, mutate, style = {},
}) => (
    <Dropzone
        style={style}
        className="ignore"
        onDrop={async ([file]) => {
            const response = await mutate({
                variables: {
                    channelId,
                    file,
                },
            });
            console.log(response);
        }}
        disableClick={disableClick}
    >
        {children}
    </Dropzone>
);

const createFileMessageMutation = gql`
  mutation($channelId: Int!, $file: File) {
    createMessage(channelId: $channelId, file: $file)
  }
`;

export default graphql(createFileMessageMutation)(FileUpload);

非常感谢您对如何访问和修改文件内容的任何想法!谢谢。

【问题讨论】:

    标签: javascript node.js reactjs react-dropzone


    【解决方案1】:
    onDrop={async ([file]) => {
      var reader = new FileReader();
      reader.onload = function(e) {
        var contents = e.target.result;
        displayContents(contents);
      };
      reader.readAsText(file);
    }}
    

    你可以在前端做的是读取文件内容并显示它,所有对文件内容的操作都应该在服务器端完成。使用 ajax 将您的文件推送到您的服务器,其中包含您想要更改和使用的信息列表,例如在 nodeJS fs = require('fs') 中进行文件修改。

    另外请访问这篇文章,我看到人们为您的问题提供了一些解决方案:

    Is it possible to write data to file using only JavaScript?

    这是从上面的链接中提取的小提琴:http://jsfiddle.net/o4rhg1xe/1/

    总而言之,您可以使用我提供的代码读取文本文件内容,然后使用链接中的方法创建具有所需内容的 Blob 对象,并且可以通过浏览器下载此类文件,(见小提琴)

    我仍然认为应该将文件修改移到后端,因为我看不到任何用例可以将它们放在前端。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多