Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 使用React上载文件并在网页中显示_Reactjs_File_Web_Show_Uploading - Fatal编程技术网

Reactjs 使用React上载文件并在网页中显示

Reactjs 使用React上载文件并在网页中显示,reactjs,file,web,show,uploading,Reactjs,File,Web,Show,Uploading,我正在尝试使用React上传txt文件,并将这些文件或文件名显示在用户面前, 授予他更改或删除文件的权限。 这是我的: import React from "react"; class Browse extends React.Component { state = {selectedFile:[] , textFile: []}; //fileChangedHandler Method fileChangedHandler =event => { for(v

我正在尝试使用React上传txt文件,并将这些文件或文件名显示在用户面前, 授予他更改或删除文件的权限。 这是我的:

 import React from "react";

class Browse extends React.Component
{

state =  {selectedFile:[] , textFile: []};

//fileChangedHandler  Method
fileChangedHandler =event => {        
 for(var i=0;i<event.target.files.length;i++){         
       this.state.fileees =event.target.files;
       this.setState({selectedFile: event.target.files[i]})

    this.setState((state) => {
        const textFile=[...state.textFile,state.selectedFile.name];
        return {
          textFile,
        };
    });

  }  //for
  } //fileChangedHandler

 render(){
    return(
        <div className="Browse">
                <label for="myfile">Insert DNA Files:</label>
                <input type="file" onChange={this.fileChangedHandler} id="myfile" name="myfile" multiple/>                  
                <div>
                  {this.state.selectedFile.name}
                </div>
        </div>
    );
}

} //class


export default Browse;
从“React”导入React;
类浏览扩展了React.Component
{
状态={selectedFile:[],textFile:[]};
//fileChangedHandler方法
fileChangedHandler=事件=>{
对于(var i=0;i{
const textFile=[…state.textFile,state.selectedFile.name];
返回{
文本文件,
};
});
}//为了
}//fileChangedHandler
render(){
返回(
插入DNA文件:
{this.state.selectedFile.name}
);
}
}//类
导出默认浏览;
它的工作非常好,如果我上传一个文件,我可以看到文件名,但它不工作,如果我上传多个文件。 我需要帮助解决这个问题, 为什么如果我上传了多个文件,我就不能在用户面前显示它们


谢谢。

您好,请检查此示例。在这里,我上传了多个文件,并在页面中显示了文件名。

import React from "react";

export default class FIleUploadExample extends React.Component {

    state = {
        files: []
    };

    fileUpload = (e) => {
        this.setState({files: [...e.target.files]});
    };

    render() {
        return (
            <div>
                <span>File Upload</span>
                <input type="file" multiple="multiple" id="file" onChange={this.fileUpload}/>
                <ul>
                    {
                        this.state.files.map((file, i) => <li key={i}>{file.name}</li>)
                    }
                </ul>
            </div>
        );
    }
}
从“React”导入React;
导出默认类FIleUploadExample扩展React.Component{
状态={
文件:[]
};
文件上传=(e)=>{
this.setState({files:[…e.target.files]});
};
render(){
返回(
文件上传
    { this.state.files.map((file,i)=>
  • {file.name}
  • ) }
); } }
我需要在文件名旁边添加两个按钮: 第一个按钮名称:“删除”当用户点击它所有的行消失。 第二个按钮名称:“更改”当用户单击它时,他可以上载另一个文件,并且新文件名必须替换旧文件名。 我该怎么做

import React from "react";
import '../index.css';
import './dna.css';



export default class Browse extends React.Component {

    state = {
        files: [],
       // changeButtons:[],
    //    deleteButtons:[]
    };

    fileUpload = (e) => {
        this.setState({files: [...e.target.files]});
       // this.setState({changeButtons:[<button>Change</button>]});
       // this.setState({deleteButtons:[<button onClick={(e)=>this.onDelete(id)}>Delete</button>]});
    };

        Change(id){
            console.log("Change Function");
        }

    Delete(id) {
        console.log("ssss")
        this.setState((prevState) => ({
          files: prevState.files.filter(files => files.id !== id),
        }))
        console.log(this.state.files.name);
      }

    render() {
        return (
            <div className="Browse">
               <label>Insert DNA Files:</label>
                <input type="file" multiple="multiple" id="file" onChange={this.fileUpload}/>
                <table className="filesName">

                    {

                        this.state.files.map((file, i) => <tr key={i}>
                                                            <td style={{textAlign:"left"}}>{file.name} : </td>
                                                            <td><button onClick={() => this.Change(i)}>Change</button></td>
                                                            <td><button onClick={() => this.Delete(i)}>Delete</button></td>
                                                          </tr>)
                    }

                </table>
            </div>
        );
    }
}
从“React”导入React;
导入“../index.css”;
导入“/dna.css”;
导出默认类浏览扩展React.Component{
状态={
文件:[],
//更改按钮:[],
//删除按钮:[]
};
文件上传=(e)=>{
this.setState({files:[…e.target.files]});
//this.setState({changeButtons:[Change]});
//this.setState({deleteButtons:[this.onDelete(id)}>Delete]});
};
更改(id){
控制台日志(“更改功能”);
}
删除(id){
控制台日志(“ssss”)
this.setState((prevState)=>({
files:prevState.files.filter(files=>files.id!==id),
}))
log(this.state.files.name);
}
render(){
返回(
插入DNA文件:
{
this.state.files.map((文件,i)=>
{file.name}:
this.Change(i)}>Change
this.Delete(i)}>Delete
)
}
);
}
}

它的工作非常好,谢谢但当我单击Inspect并转到Component以查看状态时,文件显示为空。这正常吗?@Bharizik,不客气,兄弟。“组件”选项卡是调试工具。我对它没有详细的了解。这可能是该工具的一个缺陷,但文件对象在代码中可用。您可以对这些文件执行进一步操作。好的,谢谢。我的目的是将这些文件发送到C++编写的服务器上,并与它们一起工作。你能看到我所说的评论,关于其他两个按钮吗?Thanks@BhaaRizik,我可以看到您的评论,但您应该为其创建新问题。你正在回答的地方写问题。你们能不能单独问一个问题,给我那个链接,这样我就可以为你们准备一个例子?