Не знаете, как получить доступ к локальному пути после выбора файла с помощью реакции. Могу я получить его через e.target.file или как-нибудь еще?

Вот мой код: Ключевым моментом является загрузка файла handlefileupload. Я не знаком с файлом e.target.file [0]. И я хочу попытаться получить доступ к локальному пути к выбранному файлу с помощью e.target.file. Но я не знаю как. Если не можете, есть ли другой способ сделать это. Причина, по которой я хочу получить доступ к пути, - преобразовать csv в файл json.

Получив путь, я хочу использовать этот пакет https://www.npmjs.com/package/convert-csv-to-json, чтобы преобразовать его в файл json.

import React, { useState } from 'react';
import * as XLSX from 'xlsx';
import DataTable from 'react-data-table-component';

function App() {

const [columns, setColumns] = useState([]);
const [data, setData] = useState([]);

// process CSV data
const processData = dataString => {
    const dataStringLines = dataString.split(/\r\n|\n/);
    const headers = dataStringLines[0].split(/,(?![^"]*"(?:(?:[^"]*"){2})*[^"]*$)/);

    const list = [];
    for (let i = 1; i < dataStringLines.length; i++) {
        const row = dataStringLines[i].split(/,(?![^"]*"(?:(?:[^"]*"){2})*[^"]*$)/);
        if (headers && row.length === headers.length) {
            const obj = {};
            for (let j = 0; j < headers.length; j++) {
                let d = row[j];
                if (d.length > 0) {
                    if (d[0] === '"')
                        d = d.substring(1, d.length - 1);
                    if (d[d.length - 1] === '"')
                        d = d.substring(d.length - 2, 1);
                }
                if (headers[j]) {
                    obj[headers[j]] = d;
                }
            }

            // remove the blank rows
            if (Object.values(obj).filter(x => x).length > 0) {
                list.push(obj);
            }
        }
    }

    // prepare columns list from headers
    const columns = headers.map(c => ({
        name: c,
        selector: c,
    }));

    setData(list);
    setColumns(columns);
}

// handle file upload

const handleFileUpload = e => {
    const file = e.target.files[0];
    console.warn(file);
    const reader = new FileReader();
    reader.onload = (evt) => {
        /* Parse data */
        const bstr = evt.target.result;
        const wb = XLSX.read(bstr, { type: 'binary' });
        /* Get first worksheet */
        const wsname = wb.SheetNames[0];
        const ws = wb.Sheets[wsname];
        /* Convert array of arrays */
        const data = XLSX.utils.sheet_to_csv(ws, { header: 1 });
        processData(data);
    };
    reader.readAsBinaryString(file);
}

return (
    <div>
        <input
            type = "file"
            accept = ".csv,.xlsx,.xls"
            onChange = {handleFileUpload}
        />

        <DataTable
            pagination
            highlightOnHover
            columns = {columns}
            data = {data}
        />
    </div>
);
}

export default App;

Используйте e.target.value, чтобы получить путь

Zerowiel 30.03.2021 01:24

Кстати, я не понимаю, как использовать этот пакет: npmjs.com/package/convert-csv-to-json. Но после того, как я ввел две команды npm, он показал, что не могу найти этот модуль. Вы знаете, почему это произошло? Я добавил код let csvToJson = require ('convert-csv-to-json');

xiongzhong li 30.03.2021 01:50

Проверьте свой package.json, чтобы узнать, установлен ли пакет

Zerowiel 30.03.2021 02:03

да ... больше всего сбивает с толку то, что в package.json есть

xiongzhong li 30.03.2021 02:24

И, кстати, почему target.value получает путь C: \ fakepath \ Book1.csv. Как я могу получить настоящий локальный путь?

xiongzhong li 30.03.2021 02:47
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
5
19
0

Другие вопросы по теме