通常无法将图像从前端发送到云端或后端

Posted

技术标签:

【中文标题】通常无法将图像从前端发送到云端或后端【英文标题】:Unable to send image from frontend to cloudinary or the backend in general 【发布时间】:2021-07-08 21:05:34 【问题描述】:

我正在尝试将图像从前端发送到 cloudinary,以用作我的应用中的个人资料图片。请在下面找到执行此操作的代码:

import  StyledInput, StyledLabel from '../FormInputs/styles'
import  useState  from 'react'
import  StyledButton  from '../Button/styles'
import axios from 'axios'

export function FileUploader() 
  const [file, setFile] = useState(null)
  const [image, setImage] = useState(null)
  const [showImage, setShowImage] = useState()

  function handleChange(e) 
    readFile(e.target.files[0])
    setFile(e.target.files[0])
    console.log(e.target.files[0])
  

  function readFile(file) 
    const reader = new FileReader()

    reader.readAsDataURL(file)

    reader.onload = e => setImage(e.target.result)
    reader.onerror = e => console.log(reader.error)

  

  async function handleSubmit(e) 
    e.preventDefault()
    const token = localStorage.getItem('token')

    const data = new FormData()
    if(file) 
      data.append('file', file[0], file[0].name)
    

  const response = await axios(
    method: 'PUT',
    base: 'http://localhost:8000',
    url: '/clients/clientprofile',
    data,
    headers: 
      'Content-Type': 'multipart/form-data',
      'Authorization': `Bearer $token`
    
  )

  console.log(response)
  // setShowImage(response.image)
  

  return (
    <div>
      <form onSubmit=handleSubmit>
        <StyledLabel htmlFor="file">Elegir foto de perfil</StyledLabel>
        <StyledInput
          type="file"
          accept="image/*"
          name="file"
          id="file"
          onChange=handleChange
        />
        <StyledButton type="submit">Enviar Foto</StyledButton>
      </form>
      image && <img src=image  />
    </div>
  )

当我选择图片时,它工作正常,但是,当我点击“上传图片”按钮时,它会出现以下错误:

我正在使用setFile() 定义文件,但是,当我console.log(file) 它返回null

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

由于console.log() 是异步的,它正在记录null,因为它在state 有时间更改之前执行,而未定义的问题是由于后端配置错误造成的。

【讨论】:

以上是关于通常无法将图像从前端发送到云端或后端的主要内容,如果未能解决你的问题,请参考以下文章

ReactJS中如何将图片从后端发送到前端

从 React 前端将图像上传到烧瓶后端时出现 KeyError 'image'

如何将 CSRF 令牌从 AngularJS 前端发送到 Spring REST 服务后端?

不显示来自后端的图像

后端更新时将数据发送到前端[重复]

Elasticsearch 最佳实践:直接从前端或后端使用