zoukankan      html  css  js  c++  java
  • Fetch 头像剪切修改

    前言:通过Input file upload 图片到canvas 中进行剪裁,react 可以引入react-avatar-editor对图片进行剪裁

    react-avatar-editor的使用

     <AvatarEditor
              ref={(editor) => { this.editor = editor; }}
              image={this.state.originImg}
              width={200}
              height={200}
              border={50}
              color={[248, 249, 250, 0.8]}
              borderRadius={200}
              scale={parseFloat(this.state.scale)}
              style={{ cursor: 'move', margin: '10px 0' }}
            />
    <Input type="file" prefix={<Icon type="upload" />} ref={(input) => { this.file = input; }} onChange={this.onAvatarUpload} />
    读取文件input上传的图片文件
    onAvatarUpload=() => {
        const reader = new FileReader();
        reader.onload = (e) => {
          const imgFile = e.target.result;
          this.setState({
            originImg: imgFile,
          });
        };
        reader.readAsDataURL(this.file.input.files[0]);
      }
     将剪裁好的图片文件传到后端服务器,将canvas对象以blob文件流的形式进行传递
    completeEditorAvatar=() => {
        if (this.editor) {
          const canvasScaled = this.editor.getImageScaledToCanvas();
          canvasScaled.toBlob((file) => {
            this.props.completeEditorAvatar(file);
          });
        }
      }
    前端和后端服务器之间的通信这里是使用fetch的方式发送
    const data = new FormData();
     data.append('avatar', new File([params.avatar], 'avatar.png', { type: 'image/png' }));

    在上面这过程中,通过canvas转成blob文件流在发送到后端会出现这个文件的后缀名为空,需要对blog进行进一步以new File([params.avatar], 'avatar.png', { type: 'image/png' })的方式进行封装

        我们在通过fetch的方式方送PATCH请求到后端服务器时,非文件上传时,无关你发送的数据格式是application/x-www-form-urlencoded或者application/json格式数据,你不设置请求头,fetch会给你默认加上一个Content-type = text/xml类型的请求头,文件上传时浏览器会自动转成application/json 格式,而且文件上传也是需要我们知道boundary的定义方式,那么我们就不用手动去设置Content-type

    return fetch(url, newOptions)
        .then(checkStatus)
        .then((response) => { return response.json(); })
    

     





  • 相关阅读:
    HTML特殊字符编码对照表
    在Echarts 柱形图的单击事件中写入自定义的参数
    IIS7.5支持解析读取.json文件数据 -- 问题
    VS SVN
    WebApi 跨域问题解决方案:CORS
    SQL Server2012中的SequenceNumber尝试
    Oracle数据类型与.NET中的对应关系
    MongoDB 学习 --转
    MongoDB 基础
    CSS魔法堂:你真的懂text-align吗?
  • 原文地址:https://www.cnblogs.com/fuGuy/p/9206141.html
Copyright © 2011-2022 走看看