gatsby - 如何处理 `gatsby js` 项目中的文件上传?

标签 gatsby netlify

有一个优秀的article解释如何在 netlify 上托管的 Gatsby Js 项目中处理表单提交。然而,这只是关于文本值提交,表单包含一些文件输入怎么样?

任何人都可以在这里阐明一些问题吗?

最佳答案

感谢@coreyward 的帮助。我发现这里的问题是如何使用 javascript fetch API 发布表单数据。所以这里的解决方案非常简单:

const encode = (data) => {
  const formData = new FormData()
  Object.keys(data)
    .map(key => {
      if (key === 'files') {
        for (const file of data[key]) {
          formData.append(key, file, file.name)
        }
      } else {
        formData.append(key, data[key])
      }
    })
  return formData
}

await window.fetch('/', {
    method: 'POST',
    body: encode({ 'form-name': 'loan', ...this.state, userId: netlifyIdentity.currentUser().id }),
  })

您会注意到,唯一棘手的部分是重写 official sample articleencode 函数。从uri编码form数据编码

关于gatsby - 如何处理 `gatsby js` 项目中的文件上传?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52204490/

相关文章:

javascript - 使用 Netlify 身份登录不可用

vue.js - 部署到生产 Netlify 的 Vue CLI 3 PWA 提供 Workbox 错误 : bad-precaching-response . .._redirects?__WB_REVISION__...404

gatsby - Netlify 部署失败

reactjs - netlify 部署 : Failed during stage 'building site' : Build script returned non-zero exit code: 2

graphql - 如何在graphql查询过滤器中使用OR/AND或使大小写不敏感的过滤器?

webpack - gatsbyjs - 如何将 bootstrap 4 与 gatsbyjs 2 一起使用

reactjs - 无法查询类型 "x"上的字段 "y"

javascript - Gatsby:上下文更新导致无限渲染循环

rstudio - 新的 blogdown 帖子显示在 R-Studio 上,但未在 Netlify 上渲染?如何调试?

javascript - 如何限制对 Netlify Serverless 功能的访问