react 使用fetch 上传文件 写法

第一,使用原生input的type=”file”

<input type="file" name="file" onChange={this.onChange} style={{display:'none'}} ref={this.inputRef}/>

第二, 用它的onChange方法获得file

onChange(e){
    const file = e.target.files[0]
    if(file) dispatch({ type:'upload', file })
    e.target.value = '' // 上传之后还原
}

第三,样式调整

为了不使用简陋的原生html上传按钮,
用style={{display:’none’}}隐藏原生input,

然后再自己写一个美丽的上传按钮,它onClick的时候,
调用原生input的引用,手动触发click,
像这样:

this.inputRef.click()

就相当于点击了原生按钮

第四,设置好body

用上刚才的file变量,
创建一个FormData,
append上去, 这里的formData就是fetch的body

const formData = new FormData()
formData.append('file', file)

最后 执行fetch

记得改content-type

"Content-Type": "multipart/form-data",
fetch(url,{ 
    method :"POST",
    body: formData,
    headers:{
        "Content-Type": "multipart/form-data"
    } 
})
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值