Как я могу прочитать содержимое файла с помощью Reaction-Dropzone? - PullRequest
0 голосов
/ 21 декабря 2018

Я пытаюсь узнать больше о работе с файлами для предстоящего проекта.Есть ли способ с реакцией-dropzone, когда я могу запустить функцию, когда onDrop меняет содержимое загружаемых файлов?Например, если я загружаю документ с надписью «Привет всем», как бы я изменил содержание на «Привет, доктор Ник»?

Я попытался просто получить доступ к данным с помощью api filereader api, прежде чем пытаться внести изменения.Я попытался использовать программу чтения файлов сразу после открывающей фигурной скобки асинхронной функции и не смог заставить ее работать.

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);

Будем благодарны за любые мысли о том, как получить доступ и изменить содержимое файла!Спасибо.

1 Ответ

0 голосов
/ 21 декабря 2018
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') для внесения изменений в файл.

Также, пожалуйста, посетите этот пост. Я вижу, что ребята предоставили некоторые решения для вашегопроблема:

Можно ли записать данные в файл, используя только JavaScript?

, и вот ссылка взята из приведенной выше ссылки: http://jsfiddle.net/o4rhg1xe/1/

В заключение, вы можете прочитать содержимое текстового файла, используя предоставленный мною код, а затем использовать метод из ссылки для создания объекта Blob с требуемым содержимым, и такой файл может быть загружен браузером (см. Скрипту)

Все еще визменения моего файла мнения должны быть перенесены на внутреннюю сторону, и я не вижу возможности использовать их на стороне внешнего интерфейса.

...