javascript 如何在react文件选择器中获取文件名?

b91juud3  于 2023-01-11  发布在  Java
关注(0)|答案(4)|浏览(410)

你能告诉我如何得到得到文件名在文件选择器中的React?我试图设置值在输入字段中选择文件后从file chooser这里是我的代码https://stackblitz.com/edit/react-d4kp1d?file=bulk.js我尝试这样

<input
        id="file_input_file"
        className="none"
        type="file"
        ref={inputRef }
        onChange={(e)=>{
          console.log('---')
          console.log(inputRef.current[0].files[0].name)

        }}
      />

它给出了undefined

ar7v8xwq

ar7v8xwq1#

这里有很好的文档和示例,解释了您要做的事情。https://reactjs.org/docs/uncontrolled-components.html#the-file-input-tag

代码编号:https://codepen.io/anon/pen/LaXXJj

React.JS包含要使用的特定文件API。
下面的示例说明如何创建对DOM节点的引用以访问提交处理程序中的文件:
超文本标记语言

<input type="file" />

React.JS

class FileInput extends React.Component {
  constructor(props) {
    super(props);
    this.handleSubmit = this.handleSubmit.bind(this);
    this.fileInput = React.createRef();
  }
  handleSubmit(event) {
    event.preventDefault();
    alert(
      `Selected file - ${
        this.fileInput.current.files[0].name
      }`
    );
  }

  render() {
    return (
      <form onSubmit={this.handleSubmit}>
        <label>
          Upload file:
          <input type="file" ref={this.fileInput} />
        </label>
        <br />
        <button type="submit">Submit</button>
      </form>
    );
  }
}

ReactDOM.render(
  <FileInput />,
  document.getElementById('root')
);

警报文件名

alert(`Selected file - ${this.fileInput.current.files[0].name}`);
  • 引用:React.JS文档|示例 *
tkclm6bt

tkclm6bt2#

不使用ref也可以获取所选文件名

function handleChange(event) {
    console.log(`Selected file - ${event.target.files[0].name}`);
  }

  <input type="file" onChange={handleChange} />
siotufzp

siotufzp3#

可以使用onChange处理程序

const changeHandler=(e)=>{
    if (e.target.files.length > 0) {
     let filename = e.target.files[0].name;
      console.log(filename)
    }
  }
<input type="file" onChange={changeHandler}/>
r1zhe5dt

r1zhe5dt4#

使用createRef而不是useRef
然后可以通过console.log(inputRef.current.files[0].name)访问;

import React, { Component, useRef } from 'react';
import {
  Button,
  Dialog,
  DialogActions,
  DialogContent,
  DialogTitle,
  FormControl,
  IconButton,
  Input,
  InputAdornment,
  withStyles,
} from '@material-ui/core';
import Attachment from '@material-ui/icons/Attachment';
import CloudDownload from '@material-ui/icons/CloudDownload';
const BulkUpload = (props) => {
  const { classes } = props;
  const inputRef = React.createRef();
  return (
    <div className="App">
      <input
        id="file_input_file"
        className="none"
        type="file"
        ref={inputRef}
        onChange={(e) => {
          console.log('---');
          console.log(inputRef.current.files[0].name);
        }}
      />
      <Input
        id="adornment-attachment"
        type="text"
        fullWidth
        endAdornment={
          <InputAdornment position="end">
            <IconButton
              aria-label="Toggle password visibility"
              onClick={(e) => {
                inputRef.current.click();
              }}
              className="login-container__passwordIcon"
            >
              <Attachment />
            </IconButton>
          </InputAdornment>
        }
      />
    </div>
  );
};

export default BulkUpload;

相关问题