雅荷心语博客
雅荷心语
心之所向便是光
  • 首页
  • 前端之旅
  • 后端之路
  • 软件工具
  • 心灵鸡汤
  • 心路历程
  • 视频资料
  • 关于我们
    • 关于我
    • 关于我
  • 微信平台
    • 业务合作
  • 首页
  • 前端之旅
  • 后端之路
  • 软件工具
  • 心灵鸡汤
  • 心路历程
  • 视频资料
  • 关于我们
    • 关于我
    • 关于我
  • 微信平台
    • 业务合作
  • 关注本站
    • 微信
    • 微博
    • 腾讯微博
    • Twitter
    • Facebook
    • RSS订阅
Hi, 请登录     我要注册     找回密码

lrz 图片压缩转base64字符串上传服务器方法

2016-05-24 分类:前端之旅 阅读(7424) 评论(0)

00:00/00:00

hs-xiu (1)
之前公司移动端上传图片总是遇到用户拍的照片很大,大概2-4M导致上传异常的慢,后来找到这个插件,解决了我们的问题,把图片压缩后转为base64字符串,然后服务器端收到字符串后还原图片,实现上传,

git地址: https://github.com/think2011/localResizeIMG

介绍: 前端本地客户端压缩图片,兼容IOS,Android,PC、自动按需加载文件

官方演示地址: http://think2011.net/localResizeIMG/test/

演示地址2: http://m.kuaiyoujia.com/index.php/bzf/house/whole

首先前端代码很简单的几行:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<script src="http://cdn.bootcss.com/jquery/3.0.0-beta1/jquery.min.js"></script>
<script type="text/javascript" src="lrz.bundle.js"></script>
<input type="file" name="FileData" class="uploadImg1" accept="image/*">
</body>
<script type="text/javascript">
$('.uploadImg1').change(function() {
var that = this;
lrz(that.files[0], {
width: 1000
})
.then(function (rst) {
console.log(rst);
})
.catch(function (err) {
console.log('处理失败会执行');
})
.always(function () {
console.log('不管是成功失败,都会执行');
});
});
</script>

成功后的rst里面包含了我们需要的所有信息

3

接下来直接把这些字符串发送给后台就可以了,然后我们看看服务端该怎么处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/**
     * @param $formFile 文件字符串 整个base64
     * @param $ext 文件后缀
     * @param $rots 路径
     * @param $uid  上传用户的uid
     */
    public function index($formFile,$ext,$rots)
    {
        if(IS_POST){
            $formFile = explode(',', $formFile);
            $img = base64_decode($formFile[1]);//切割字符串得到图片base64编码
            if ($formFile) {
                $u = uniqid();//获取随机字符
                $path = './Uploads/App/' . $u . $ext;//拼接路劲
                $a = file_put_contents($path, $img);//返回的是字节数
                 //代码执行到这里已经上传成功了.
                //$result = $this->qiniu($path,$ext,$rots); //调用七牛接口上传
                if ($result != false) {
                    $this->delImg($path);//删除成功!
                    ajaxReturn(array('code'=>1,'mes'=>'上传成功'));
                }
            }
        }else{
            ajaxReturn(array('code'=>-9,'mes'=>'请使用正确的方式提交'));
        }
    }

就这样,我们就很轻松把图片上传到了服务器,当然还可以跨域上传!

特别注意的是:

1
2
$formFile = explode(',', $formFile);
$img = base64_decode($formFile[1]);//切割字符串得到图片base64编码

因为我们发给服务器的字符串开头是这样 : data:image/jpeg;base64, 这一部分不是我们图片的base64编码,所以需要去掉,只留下后面的部分!

分享到:更多 ()
标签:前端界面

相关推荐

  • 获取上传文件实时进度条的尝试
  • 关于微信小程序Websocket的一些小坑
  • 记录几个常用的HTML空格占位符
  • 简单理解vue的slot内容分发
  • vue 官方推荐Nuxt.js 服务端渲染尝试!
  • 使用 Electron 打包桌面应用
  • vue-cli 实现后台实时编译修改
  • 移动云全景 – 怎么生成720全景
关于我

小天明 北京·朝阳 前端搬砖工程师

碎碎念):(来自公众号)

热门文章

  • 踩坑记录——iphone上safari开启隐身模式时localStorage变为只读-雅荷心语博客踩坑记录——iphone上safari开启隐身模式时localStorage变为只读2017-02-21评论(4)
  • 程序员是怎样一群人-雅荷心语博客程序员是怎样一群人2015-12-08评论(3)
  • 百度你个大毒瘤 - 吐糟博客这几天打不开事情-雅荷心语博客百度你个大毒瘤 – 吐糟博客这几天打不开事情2015-12-28评论(2)
  • PHP 非对称加密 openssl 加密及解密方法-雅荷心语博客PHP 非对称加密 openssl 加密及解密方法2016-05-17评论(2)
  • PHPStorm10 下载安装破解汉化-雅荷心语博客PHPStorm10 下载安装破解汉化2015-12-15评论(2)
2025年7月
一 二 三 四 五 六 日
« 六    
 123456
78910111213
14151617181920
21222324252627
28293031  

最新评论

  • 前端小武 8年前 (2017-04-06)说:
    我看到了layer
  • 丁艳平 8年前 (2017-03-03)说:
  • Dawn 9年前 (2016-09-16)说:
    call_user_func_array最后的例子是错哦,你用bc方法去调用类里 另外一个方法就知道问题所在了。情况1.调用非静态方法 第一个参数应该传[类的实例,调用方法] (既然有类实例了直接-&
  • Dawn 9年前 (2016-06-21)说:
    tp框架设置了全局捕获异常的,这也没什么。坑的是 他捕获了异常。然后全部返回404。。。不知道的 还以为自己网站被删除了
  • Dawn 9年前 (2016-05-17)说:
    构造函数里的判断 用异常机制可能更好一些

其他类型

  • 芊云全景
  • 配音兔AI配音神器

博客类型

  • 芊云全景
  • 配音兔AI配音神器

左邻右舍

  • 易水寒
  • 楼教主
  • 芊云全景
  • 贤心
  • 配音兔AI配音神器

雅荷心语博客 -心之所向便是光

联系我们关于我们

© 2025 雅荷心语博客   网站地图