如何使用react发送表单数据

2024-01-29

我有一个使用此方法的 webapi:

 public async Task<IHttpActionResult>  PutTenant(string id, Tenant tenant, HttpPostedFile certificateFile)
        {
            CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["AzureStorageKey"].ToString());
            // Create the blob client.
            CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

            // Retrieve reference to a previously created container.
            CloudBlobContainer container = blobClient.GetContainerReference(ConfigurationManager.AppSettings["certificatesContainer"].ToString());

            // Retrieve reference to a blob named "myblob".
            CloudBlockBlob blockBlob = container.GetBlockBlobReference("myblob");

            // Create or overwrite the "myblob" blob with contents from a local file.
            blockBlob.Properties.ContentType = certificateFile.ContentType;
            blockBlob.UploadFromStream(certificateFile.InputStream);

            var tenantStore = CosmosStoreFactory.CreateForEntity<Tenant>();
            tenant.CertificatePath = blockBlob.Uri;

            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }
            if (id != tenant.TenantId)
            {
                return BadRequest();
            }

            var added = await tenantStore.AddAsync(tenant);
            return StatusCode(HttpStatusCode.NoContent); 
        }

现在我有一个反应形式:

import React, { Component } from 'react';

import { Row, Col } from 'antd';
import PageHeader from '../../components/utility/pageHeader';
import Box from '../../components/utility/box';
import LayoutWrapper from '../../components/utility/layoutWrapper.js';
import ContentHolder from '../../components/utility/contentHolder';
import basicStyle from '../../settings/basicStyle';
import IntlMessages from '../../components/utility/intlMessages';
import { adalApiFetch } from '../../adalConfig';
import axios from 'axios';
const API_SERVER = "example.azure.com/upload";

export default class extends Component {
  constructor(props) {
    super(props);

  }

  upload(e) {

    let data = new FormData();

    //Append files to form data
    let files = e.target.files;
    for (let i = 0; i < files.length; i++) {
      data.append('files', files[i], files[i].name);
    }

    let d = {
      method: 'post',
      url: API_SERVER,
      data: data,
      config: {
        headers: {
          'Content-Type': 'multipart/form-data'
        },
      },
      onUploadProgress: (eve) => {
        let progress = utility.UploadProgress(eve);
        if (progress == 100) {
          console.log("Done");
        } else {
          console.log("Uploading...",progress);
        }
      },
    };
    let req = axios(d);

     return new Promise((resolve)=>{
        req.then((res)=>{
            return resolve(res.data);
        });
    });

  }


  render(){
    const { data } = this.state;
    const { rowStyle, colStyle, gutter } = basicStyle;


    return (
      <div>
        <LayoutWrapper>
        <PageHeader>{<IntlMessages id="pageTitles.TenantAdministration" />}</PageHeader>
        <Row style={rowStyle} gutter={gutter} justify="start">
          <Col md={12} sm={12} xs={24} style={colStyle}>
            <Box
              title={<IntlMessages id="pageTitles.TenantAdministration" />}
              subtitle={<IntlMessages id="pageTitles.TenantAdministration" />}
            >
              <ContentHolder>
              {//Put Form here with file upload.
              }
              <form>
              Name:     <input type="text" name="tenanturl" />
              Password: <input type="text" name="password" />

              <input onChange = { e => this.upload(e) } type = "file" id = "files" ref = { file => this.fileUpload } />
              <input type="submit" value="Submit" />
              </form>
              </ContentHolder>
            </Box>
          </Col>
        </Row>
      </LayoutWrapper>
      </div>
    );
  }
}

租户对象有 2 个字符串属性,它们的形式相同。 如何将这 2 个字符串属性作为租户对象发送?如何触发提交表单?

顺便说一句,对 React 中的表单不熟悉


这是我的样本。基本上我将定义要发送到 API 的属性。在本例中我使用 axios

const data = {
    Username: this.state.username,
    Email: this.state.email,
}

axios
      .post(url, data)
      .then(data => {
        //something
      })
      .catch(error => {
        //something
      });

在我的 API 控制器中,我将使用 [FormBody] 标签接收传递到服务器的数据

public async Task<IActionResult> AddNewUser([FromBody] UserInputViewModel userInputVm)

请根据您的代码进行相应调整。如果您有任何问题,请告诉我。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用react发送表单数据 的相关文章

随机推荐

  • TYPO3:将插件从 USER 更改为 USER_INT 类型

    我有一个可用的 TYPO3 扩展 附有这个维基页面 http wiki orbeon com forms doc developer guide form runner typo3 extension 如何更改此扩展的代码 使其成为 USE
  • UISearchController searchBar在推送视图控制器时不会消失

    我在 ma 中使用 UISearchControllerUIViewcontroller其中包含一个UITableView 我这样做是在viewDidLoad self searchController UISearchController
  • 由于位图大小过大而导致内存不足异常

    由于虚拟内存堆大小有限 我遇到内存不足的问题 这是我从服务器获取位图的代码 SuppressWarnings unchecked public class DrawableManager SuppressWarnings rawtypes
  • Android 通知未在 API 26 上显示

    我最近将我的应用程序更新到 API 26 并且通知不再起作用 甚至没有更改代码 val notification NotificationCompat Builder this setSmallIcon R drawable ic noti
  • Amazon S3 重定向和 Cloudfront

    我正在尝试使用此处引用的对象在 S3 上设置 301 重定向http docs aws amazon com AmazonS3 latest dev how to page redirect html http docs aws amazo
  • Git:更新后挂钩,运行需要访问存储库中所有文件的脚本

    我现在遇到了一些困境 因为我需要一个脚本来运行 每当远程存储库更新时 即 每当有人运行 git Push 从存储库中的文件构建包 然后 这些包被放置到 git 服务器上的一个目录中 该目录通过 HTTP 公开给客户端以供将来使用 问题是 我
  • 在 Javascript 中,如何判断用户是否同时按下两个键?

    在 Javascript 中 如何判断用户是否同时按下两个键 例如 我在屏幕中间画了一个圆圈 我想在用户按住向上箭头时向上移动它 在用户按住向右箭头时向右移动它 这部分工作很容易 如果用户同时按住向上和向右箭头 我想沿对角线 向上和向右移动
  • 事件循环上下文中微任务和宏任务之间的区别

    我刚刚读完 Promises A 规范 并偶然发现了术语 microtask 和 Macrotask 请参阅http promisesaplus com notes http promisesaplus com notes 我以前从未听说过
  • CSP:child-src 和frame-src 已弃用

    在 CSP v2 中框架 src已被弃用 子源代码建议使用 在 CSP v3 中框架 src在未弃用和子源代码已弃用 目前 2017 年 9 月 Chrome child src 指令已被弃用 并将在 2017 年 8 月左右的 M60 中
  • 从 XML 模式生成 XML 实例 (xsd) [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 圆角仅在 svg 的一侧

    我正在尝试实现类似图表的条形图 我有以下 html 元素
  • StackExchange.Redis:获取频道订阅的数量(即 PUBSUB NUMSUB)

    有没有办法通过 StackExchange Redis 库获取特定 Redis 频道的频道订阅数量 当直接与 Redis 交互时 它将使用 PUBSUB NUMSUB 命令 http redis io commands pubsub htt
  • 波浪背景颤振辅助

    I have been struggling with this problem for the past 3ish days Basically I want the homepage of my app to have a waveli
  • AEM 6 对话框中有条件显示/隐藏字段

    我正在使用简单的创作对话框构建一个相对简单的 AEM 组件 对话框的顶部是一个选择字段 当此选择字段设置为特定项目时 我希望对话框中的某些字段消失 我研究了 Foundation Carousel 组件的实现 它使用cq dialog dr
  • C++11 中 COW std::string 实现的合法性

    我的理解是 写时复制并不是实现一致性的可行方法 std string在 C 11 中 但当最近在讨论中出现时 我发现自己无法直接支持该声明 我是否正确 C 11 不承认基于 COW 的实现std string 如果是这样 这个限制是否在新标
  • ajax请求浏览器限制

    从一个更通用的问题开始 如果是 JSON 请求 ajax 请求的响应大小是否有限制 我通过 JSON 请求传递大量数据 并在 FF3 中遇到 脚本堆栈配额已耗尽 消息 现在 FF2 中的配额为 4mb 但 FF3 中的配额为 640kb 我
  • 在批处理中,如何在输入提示字符串的开头创建空格?

    假设我有一个批处理文件 其中包含 填充 并且我想缩进提示字符串的开头以供用户输入 如果我使用空格 则运行时不会显示它 它只是忽略空间 该脚本为例 echo off echo echo echo Hi echo Please input so
  • 如何从 boost 库中取出单个元素(例如共享指针)?

    我一直在尝试一些 Boost 组件 我认为在我正在从事的项目中直接需要的唯一一个是boost shared ptr 仅仅包含所需的文件会很困难吗 shared ptr 或者至少在我的项目中包含 Boost smart ptr 目录的文件 它
  • JVM 10 规范有差异吗?

    有谁知道是否有一个版本的 Java 10 和 JVM 10 规范与以前的版本有所不同 对于 Java 8 和 Java 9 存在带有差异的规范 否则很难看出到底发生了什么变化 关于Java 9和Java 10 18 3 的区别 可以下载 J
  • 如何使用react发送表单数据

    我有一个使用此方法的 webapi public async Task