当前位置: 首页 > 知识库问答 >
问题:

无法通过reactjs中的html表单进行post调用和发送文件

蒋阳华
2023-03-14

我是新来的,努力想找到我的答案,但我仍然有同样的问题。我已经检查了所有类似的问题和答案,但没有一个能帮助我,所以如果你知道同样的问题

我有一个html表单,它假设接受一个zip文件和一个字符串,然后希望通过Post方法将它们传递给Web服务。

我有其余的api服务器,这是我通过Spring boot编写的,现在尝试制作一个客户端测试项目来测试它。Postman的测试是成功的,我发送请求并接收响应没有问题,但是使用此API,我没有成功。通过我从互联网资源中学到的东西,我已经在我的应用程序中改变了很多,这是我卡住的最后一步

如果有人能帮我找到这个错误,我将不胜感激。

这是我的ReactJs代码:

import React, {Component} from 'react';
import img from "./images/test.jpg"
import './App.css';
import 'bootstrap/dist/css/bootstrap.min.css'; 

class DoPost extends Component {

    constructor(props) {
        super(props);
        this.handleSubmit  = this.handleSubmit.bind(this);
        this.state = {
            id:null,
            fileData:null,
            url:"http://localhost:8990/getId"
        };
    }





    handleSubmit(event) {

        let formData = new FormData();
        formData.append('fId', this.fId.value);
        formData.append('inputPackage', this.inputPackage.value); 
        console.log(this.fId.value);
        console.log(this.inputPackage.value);
        fetch(this.state.url, { 
            method: 'POST',
            body: formData
        }).then(res => {
            alert(res);
        });


    }



    render() {

        return (<div>
                <section className="login-block">
                    <div className="container">
                        <div className="row">
                            <div className="col-md-4 login-sec">
                                <form onSubmit={this.handleSubmit}>
                                    <label htmlFor="fId">fId Id:</label>
                                    <input type="text" name="fId" id="fId" ref={el => this.fId = el} /><br/><br/>
                                     <div className="form-group files color">
                                        <label>Upload Your File </label>
                                        <input type="file" name="inputPackage" ref={el => this.inputPackage = el}  required
                                                className="file-controller"/>
                                    </div>
                                    <div className="align-center">
                                        <input type="submit" className="btn btn-lg btn-info " value="Send the request" />
                                    </div>
                                </form>
                            </div>
                            <div className="col-md-8 banner-sec">
                                <div id="carouselExampleIndicators" className="carousel slide" data-ride="carousel">
                                    <div className="carousel-inner" role="listbox">
                                        <div className="carousel-item">
                                            <img className="d-block img-fluid" src={img} alt="First slide"/>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </section>
            </div>
        );
    }
}

export default DoPost;

共有1个答案

范金鑫
2023-03-14

我不知道你在这里得到的错误是什么,但你的抓取在某种程度上是错误的。fetch的第一个响应是一个promise,你需要处理它。

fetch(this.state.url, { 
            method: 'POST',
            body: formData
        })
         .then( res => res.json())
         .then( res => {
            alert(res);
        })
);

此外,您需要在handleSubmit方法中添加event.preventDefault()以防止表单提交后刷新。

handleSubmit(event) {
    event.preventDefault();
    let formData = new FormData();
    ...
 类似资料:
  • 问题内容: 我正在编写API,并且想处理从表单上传的文件。表单的标记没有什么太复杂的: 但是,我很难理解如何处理此服务器端并与cURL请求一起发送。 我熟悉使用带有数据数组的cURL 发送请求,并且在上载文件时阅读的资源告诉我在文件名前加上一个符号。但是这些相同的资源具有硬编码的文件名,例如 那么这是哪个文件路径?我在哪里可以找到它?会是什么样子,在这种情况下,我的数组应该像这样: 还是我走错路了

  • 问题内容: 我正在使用jQuery将div的HTML内容发布到PHP文件。HTML内容包含表,输入,较小的div,我想获取主DIV的内容并将其发送到数据库。我能想到的唯一选择是POST方法,但我不知道是否可以发送纯HTML。从div发送HTML内容到要插入MySQL的PHP​​文件还有其他选择吗? 谢谢。 编辑: 我现在能够使用jQuery的POST发送完整的HTML数据。但是,来自该DIV的HT

  • 问题内容: 我希望了解有关使用这两种方法的所有优缺点。特别是对网络安全的影响。 谢谢。 问题答案: 要在它们之间进行选择,我使用以下简单规则: 获取读取。(读取并显示数据) POST进行任何写操作(即更新数据库表,删除条目等) 另一个要考虑的是,GET必须遵守最大URI长度,并且当然不能处理文件上载。

  • 问题内容: 我有工作的服务器和客户端应用程序,它们在发送小文件时可以完美工作,但是当我尝试通过套接字发送例如700mb的电影文件时,它给了我 我在互联网上搜索并找到了一些有关发送大文件的教程,但并不太了解它们,但是我认为我的麻烦在于编写文件。 这是服务器用来写入我的文件的代码: 这是我的客户用来发送文件的代码: 问题答案: 它之所以给您,是因为您试图在发送之前将整个文件读入内存。这完全是100%完

  • 当我尝试上传16.9 MB大小的MP4视频时,使用ajax async post将其上传到PHP文件,控制台会触发一个错误,提示:posthttp://website.com/proc_vids.phpnet::ERR_EMPTY_响应 我知道这个问题与PHP内存限制有关,因为当我设置为200 MB时,一切正常,但当我将其更改回100 MB时,就会发生此错误。 我甚至无法将POST发送到PHP变量

  • 我正在开发一个查看器应用程序,其中服务器捕获图像,执行一些图像处理操作,这需要在客户端显示在HTML5画布上。我写的服务器是在VC和使用http://www.codeproject.com/Articles/371188/A-Cplusplus-Websocket-server-for-realtime-interact. 到目前为止,我已经实现了所需的功能。现在我需要做的就是优化。引用是一个用来