base64格式的图片如何上传到oss

---恢复内容开始---

对于base64图片的上传这个东西,一直是一个问题尤其是上传到oss。我们这次开发由于需要修剪图片,使用了h5的很多新特性。

h5修剪图片,使用了我们的canvas。这个步骤是这样的。img->canvas->base64(by toDataURL)。很多人走到了这个地方直

接懵逼,base64怎么上传啊。找了很多网上的,发现确实找不到,没什么人上传base64的教程。有点小绝望,感觉使用新特性,

修改图片可能是种错误的选择,然后出现了一个新的东西Blob对象,这个东西就无敌了。

  img->canvas->base64(by toDataURL)->Blob

  polyfill

if (!HTMLCanvasElement.prototype.toBlob) {
 Object.defineProperty(HTMLCanvasElement.prototype, ‘toBlob‘, {
  value: function (callback, type, quality) {

    var binStr = atob( this.toDataURL(type, quality).split(‘,‘)[1] ),
        len = binStr.length,
        arr = new Uint8Array(len);

    for (var i=0; i<len; i++ ) {
     arr[i] = binStr.charCodeAt(i);
    }

    callback( new Blob( [arr], {type: type || ‘image/png‘} ) );
  }
 });
} 

这样我们就可以转为我们的blob对象。blob对象是可以直接上传的。这样只需要在DataForm里面append(file, blob)。这样我们的就可以上传我们的文件了。
你当然可以说还可以更简单,对简单。。。一开始怎么不说。。。先繁后简。。。canvas.toBlob()

这样可以直接转成我们base64
img->canvas->Blob(by toBlob) canvas.toBlob(callback, mimeType, qualityArgument)

可以在回调里面写入我们的上传的代码。目前来说这个东西,只是chrome ^50 ,firefox ^19,  IE ^10你要考虑兼容的话,那就没有办法使用这个东西了。事物是向前发展的, canvas会面的使用一定成为主流。长痛不如短痛。赶紧试试吧。很方便。
时间: 2024-11-03 00:32:43

base64格式的图片如何上传到oss的相关文章

H5+jqweui实现手机端图片压缩上传

主要功能,使用H5的formData上传base64格式的图片,canvas压缩图片,前端样式使用weui,为方便起见,使用了jquery封装过的weui,jqweui. 话不多少,开始上代码. 前端代码,直接在jqweui官网下的demo里改的(是dist下的demo) <!DOCTYPE html> <html> <head> <title>jQuery WeUI</title> <meta charset="utf-8&qu

图片(画布上的图片)上传总结

最近在做图片上传的一些东西,目前为止已经做的相对比较完善了,所以对图片上传做一些总结. 我最初的想法是把html5的标签canvas上的图片得到,上传到服务器上并能够及时预览. canvas上的图片分为两种情况: 1.自己绘制上去的.代码如下: var c=document.getElementById("myCanvas"); var cxt=c.getContext("2d"); var grd=cxt.createLinearGradient(0,0,175,

PHP使用七牛云存储之图片的上传、下载、303重定向教程,CI框架实例

网上关于七牛云存储的教程除了官网上的API文档,其他的资料太少了.研究了下API之后,现在已经能实现图片的上传和下载及上传之后的重定向. 首先本篇文章实现的功能如下: 1.利用表单上传功能,用户可以点击选择文件按钮,选择本地的一个文件,同时设定上传的图片的名称,点击上传按钮可以上传并存储到七牛云存储. 2.在点击上传时会检测文件的后缀名,限制为jpg和png格式存储. 3.上传成功后跳转到自己设定的一个URL,并传回文件信息,如文件名.而不是显示七牛白花花的json显示页面. 好啦,那我们开始吧

HTML5 本地裁剪图片并上传至服务器(转)

很多情况下用户上传的图片都需要经过裁剪,比如头像啊什么的.但以前实现这类需求都很复杂,往往需要先把图片上传到服务器,然后返回给用户,让用户确定裁剪坐标,发送给服务器,服务器裁剪完再返回给用户,来回需要 5 步.步骤繁琐不说,当很多用户上传图片的时候也很影响服务器性能. HTML5 的出现让我们可以更方便的实现这一需求.虽然这里所说的技术都貌似有点过时了(前端界的“过时”,你懂的),但还是有些许参考价值.在这里我只说一下要点,具体实现同学们慢慢研究. 下面奉上我自己写的一个demo,在输入框中选好

Laravel项目中使用markdown编辑器及图片粘贴上传七牛云

本文为转载,原文:http://www.chairis.cn/blog/article/15 Markdown Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式.本次我们选用的编辑器是: Editor.md,官网中也有很详细的介绍.从官网中下载安装下载的内容中,也有很多demo可以借鉴.在下载的包中,去除一些多余的内容,只保留我们需要的内容,然后加到项目的public目录下,如下图红色框内的内容: 项目中使用 在项目中使用edit

HTML5实现图片压缩上传功能

上篇文章中提到移动端上传图片,我们知道现在流量还是挺贵的,手机的像素是越来越高,拍个照动不动就是好几M,伤不起.虽然客户端可以轻轻松松实现图片压缩再上传,但是我们的应用还可能在浏览器里面打开,怎么办呢,图片压缩.受以前PC上的开发思维影响,尼玛js哪有权限去操作文件,哪有资格压缩图片啊,搞不了,你们客户端去整吧.只能说自己还是有些井底之蛙了.在HTML5的影响下,前端能干的事情越来越多了,开发的功能逼格也越来越高了,H5万岁!前端的魅力也在这,过去不可能的并不意味现在.以后不可能,努力吧,骚年!

C#中使用iframe结合js实现图片异步上传

将图片上传的页面放在iframe中,通过iframe跳转到另一个页面,在该页中将图片提交到服务器,而不需要对主页进行刷新,提交成功后用脚本(回调函数)实现上传的图片在主页面的显示. 图片选择页面 Add.aspx <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Add.aspx.cs" Inherits="_Add" %> <!DOCTYPE h

Html5+asp.net mvc 图片压缩上传

在做图片上传时,大图片如果没有压缩直接上传时间会非常长,因为有的图片太大,传到服务器上再压缩太慢了,而且损耗流量. 思路是将图片抽样显示在canvas上,然后用通过canvas.toDataURL方法得到base64字符串来实现压缩. 废话不多少不多说直接看代码: 本次测试使用了 zepto.min.js 插件,更新版本的下载请点击这里 主要js代码: //图片压缩处理 ; (function () { /** * 加载的时候进行抽样检测 * 在iOS中,大于2M的图片会抽样渲染 */ func

Asp.Net 自定义控件实现图片的上传,浏览,删除功能

4月的时候公司比较闲,就想着自己做点东西,其实主要是为了更加熟悉.Net,毕竟接触的时间不长,趁着有时间想提高提高.不过当我做到图片上传这个功能的时候,就有些停滞不前了,连续写了两天也达不到自己想要的标准.后来公司来活,然后就没有然后了,然而做事总不能半途而废吧~时隔一个多月,趁着这个周末,我再次拾起了这个项目,而首要工作就是攻破这个图片上传控件. 下面说说我的标准是什么子的吧~ 1.最多可以上传三张图片,超过三张有提示. 2.点击图片小图,有图片放大功能,再次点击,图片恢复原来尺寸. 3.在图