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 系统概括: 系统具有完整的用 ...
随机推荐
- jQuery OCUpload一键上传文件
1 引入相关的js文件 <!--引入OCUpload的js文件,之前需要引入jQuery的js文件 --> <script type="text/javascript&qu ...
- 异步请求返回json对象
后台mvc: var result = new { flag = ture, eMail = "949096562@qq.com"}; if (result.flag) { ret ...
- C#序列化结构体
在将对象或结构体序列化成二进制数据流时,我们通常都会使用 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter 类来实现, 但是 ...
- Java基础入门 - 标识符及其命名规范
类名.变量名.方法名都称为标识符 标识符命名规范: 由字母(A-Z或a-z).数字.下划线(_)和美元符($)中的一种或多种组合而成 不可以数字开头 大小写敏感 关键字不能用作标识符 合法标识符如:D ...
- windows server2008 64 asp.net 使用office组件环境配置.
服务器是windows server2008 64位系统, 我的系统需要用到Microsoft.Office.Interop.Excel组件 在上传Excel单据遇到错误:检索 COM 类工厂中 CL ...
- Redis整理第二波(启动、命令)
启动 配置数据库数量: Redis默认开启16个数据库,不能像mysql自定义数据库名称,只能是数值,不能修改. 配置内存大小: 会生成一个和内存大小一样的文件. maxmemory 200mb #在 ...
- CentOS 6.5下安装Tomcat --专业增强版 非yum
Tomcat安装 通常情况下我们要配置Tomcat是很容易的一件事情,但是如果您要架设多用户多服务的Java虚拟主机就不那么容易了.其中最大的一个问题就是Tomcat执行权限.普通方式配置的Tomca ...
- <Android 基础(十六)> Toast
介绍 A toast provides simple feedback about an operation in a small popup. It only fills the amount of ...
- 回归JDK源代码(2)Enumeration<E>接口
现在的Java程序员习惯使用Iterator<E>接口或者增强for循环来遍历集合.如果回到JDK 1.0,Enumeration接口则是遍历向量.哈希表的不二之选.本节就解读和翻译一下E ...
- vue - 绑定css、style
1.绑定html css1.1对象语法: 传给 v-bind:class 一个对象,以动态地切换 class <div v-bind:class="{ active: isActive ...