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(); })
Fetch 头像剪切修改的更多相关文章
- ASP.NET实现头像剪切保存
利用swfupload上传头像,利用Jcrop来实现头像在线选择,然后提交个ashx对原头像进行剪切.代码如下: default.aspx: <%@ Page Language="C# ...
- WPF 自定义图片剪切器 - 头像剪切(扩展与完善、实时截图)
原文:WPF 自定义图片剪切器 - 头像剪切(扩展与完善.实时截图) 一.说明:上一次写的"WPF 自定义图片剪切器 - 头像剪切.你懂得"存在明显的缺陷,由于篇幅较长.重新写了一 ...
- html5,js插件实现手机端实现头像剪切上传
思路:先打开相册,选取图片,在剪切图片,转化为base64格式,然后上传到七牛存储,返回url,再传给后端,整个流程就是这样.用的是angular框架,图像插件用到imagecropper.js,废话 ...
- 使用jcrop进行头像剪切
http://www.cnblogs.com/chenssy/archive/2013/05/18/3084985.html http://code.ciaoca.com/jquery/jcrop/ ...
- 可在广域网部署运行的QQ高仿版 -- GG叽叽V3.5,增加自拍头像功能、细节优化(源码)
距离上次发版本(GG叽叽V3.4,增加系统设置.最近联系人.群功能)又有1个月了,在这个月内,由于空闲时间不是很多,所以,GG增加的主要功能只是拍照并设定其为自己头像.修改密码.删除好友.以及一些bu ...
- C# Flash 图片上传案例(结合网上腾讯头像上传Flash插件)
之前遇到过很多次要上传类似头像图片这种功能需求,这次是要求弄一个flash插件上传图片 感谢主,一个偶然机会在网上找到了一个很好的腾讯头像修改的flash插件:插件下载 这个功能采用Ajax访问支持, ...
- C#-Newtonsoft.Json遍历并修改JSON
遍历 JObject:https://www.newtonsoft.com/json/help/html/JObjectProperties.htm 遍历 JArray: string json = ...
- 2014年6月份第4周51Aspx源码发布详情
通用医院会员管理系统源码 2014-6-23 [VS2010]功能介绍:本系统共包括以下模块:会员开卡管理.会员充值管理.会员消费管理.会员病例管理.客户预约管理.系统信息管理(门诊管理.卡类型管理 ...
- 在线教育平台搭建 预览和models
一.前言 1.1.项目介绍 在线演示地址:mxonline.mtianyan.cn 开发环境: python:3.6.4 Django:2.0.2 后台管理:xadmin 系统概括: 系统具有完整的用 ...
随机推荐
- object的equals方法与“==”的使用
官方文档是这么说的:
- Trace Logging Level
Trace In functions which support this level, details every parameter and operation to help diagnose ...
- 利用Serv-U搭建FTP服务器
以前在学校的时候,学校的整个宿舍楼都是在一个局域网中,经常有人用个人电脑搭个网站或者FTP啊什么的,主要是进行一些影视资源的传播活动.不乏 有些资源充沛的有志青年利用业余时间翻译某岛国影视资源,利用局 ...
- pat1091. Acute Stroke (30)
1091. Acute Stroke (30) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue One impo ...
- LCS与打印路径
/* LCS */ #include<bits/stdc++.h> using namespace std; const int maxn = 1000; int dp[maxn][max ...
- D5上
好慌啊 0分?? T1 感觉是组合数,不知道对不对. #include<iostream> #include<cstring> #include<cstdio> # ...
- EF删除数据
1.方法一,面向对象 using (MyDbContent content = new MyDbContent()) { content.Entry<UserInfo>(model).St ...
- linux创建用户与删除用户及问题解决(ubuntu)
创建的用户不正确,一直在删除创建,发现了挺多问题也学到了一些东西如下是我的总结. (root用户设置: 由于ubtun系统默认是没有激活root用户的,需要我们手工进行操作,在命令行界面下,或者在终端 ...
- Hibernate课程 初探一对多映射3-1 单向多对一简介
多对一的关系和关系数据库中的外键参照关系最匹配,即在己方的表中的一个外键参照另一个表中的主键! 通过在多方持有一方的引用来实现,需要在多的一方使用<many-to-one>来配置
- ARouter使用随记
官方文档地址 其他配置 1.创建一个config.gradle ext{ isDebug = false //false:作为Lib集成存在, true:作为application组件存在 andro ...