react上传图片

//form表单
<form onSubmit={this.handleSubmit.bind(this)}
      name="fileinfo">
  {/*accept限定图片上传格式,指定id,方便formData上传时获取file的数据*/}
  <input id="imgUrl" name="from1" type="file" accept="image/jpeg,image/x-png,image/gif"
         ref="files" onChange={(e) => {
    this.judge(e.target.files[0])
  }}/>
</form>

//提交按钮
<input style={{opacity: 1}} onClick={() => {
   this.addChapter(submitPath)
}} form="UpdataImg" id="Button1" type="submit" value="上传"/>


//addChapter
addChapter(submitPath) {
  let input = document.forms['fileinfo'].from1
  let data = new FormData()
  data.append('from1', input.files[0])

  const {dispatch,query,addNotification} = this.props;
  fetch(submitPath, {
    method: "POST",
    body: data
  }, dispatch(ToggLoad()))
    .then(response => response.json())
    .then(response => decode(response))
    .then(json => {
	//上传成功的的逻辑
      dispatch(ToggLoad())
    })
    .catch(err => {
      dispatch(ToggLoad())
    })
}

如果您使用React编写前端页面,并且需要上传图片并压缩,可以使用以下步骤: 1. 安装用于图片压缩的库,如`compressorjs`或`react-image-file-resizer`。 2. 创建一个组件来上传图片,可以使用`<input type="file">`元素。 3. 当用户选择图片时,可以将其读入内存并压缩。 4. 压缩完毕后,将压缩后的图像作为文件上传。 以下是一个简单的示例代码: ```javascript import React, { useState } from 'react'; import Compressor from 'compressorjs'; const UploadImage = () => { const [file, setFile] = useState(null); const handleFileChange = (event) => { const imageFile = event.target.files[0]; new Compressor(imageFile, { quality: 0.6, success(result) { setFile(result); }, error(err) { console.log(err.message); }, }); }; const handleUpload = () => { // 将压缩后的图像作为文件上传 const formData = new FormData(); formData.append('image', file); // 发送formData到服务器 }; return ( <div> <input type="file" onChange={handleFileChange} /> <button onClick={handleUpload}>上传图片</button> </div> ); }; export default UploadImage; ``` 在这个示例中,我们使用`compressorjs`库来压缩图像。`handleFileChange`函数会在用户选择图片后调用,将图片读入内存并压缩,然后将压缩后的图像设置为组件状态的`file`属性。 `handleUpload`函数在用户点击“上传图片”按钮时调用,将压缩后的图像作为文件上传。您可以将`formData`发送到服务器并在服务器端进行处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值