基于tp5框架用uploadify插件实现异步上传图片,总结下今天下午的学习。整个上传部分分为几个部分。

一、刚开始当然是下载uploadify插件啦!

官网地址:http://www.uploadify.com/ 国内没被墙但是打开速度很慢(打个广告,有想合租ss的吗,一个月才7块钱,速度流程youtube 4k!)

二、引用jquery库,uploadify脚本,uploadify样式表

{load href="__STATIC__/admin/hui/lib/jquery/1.9.1/jquery.min.js" /}
{load href="__STATIC__/admin/uploadify/jquery.uploadify.min.js" /}
{load href="__STATIC__/admin/uploadify/uploadify.css" /}

以上三个文件都是必须加载的哈!加载路径视自己实际情况而定。
另外加载了image.js 在此js中进行图片上传操作

{load href="__STATIC__/admin/js/image.js" /}

三、声明一个html上传控件

<input id="file_upload" type="file" multiple="true" >

四、将声明的上传控件与image.js中的上传部分进行绑定

$(function() {
    $("#file_upload").uploadify({
        'swf'             : SCOPE.uploadify_swf,
        'uploader'        : SCOPE.image_upload,
        'buttonText'      : "图片上传",
        'fileTypeDesc'    : 'Image files',
        'fileObjName'     : 'file',
        'fileTypeExts'    : '*.gif; *.jpg; *.png',
        'onUploadSuccess' : function(file, data, response) {
            alert('The file ' + file.name + ' was successfully uploaded with a response of ' + response + ':' + data);
        }
    });
});

这段JS需要理解uploadify插件给出的 属性 事件 方法 三个定义。
具体可看这篇文章:https://www.hongxuelin.com/php/174.html
在这个js中我用id选择器选中之前声明的html上传控件,
swf属性设置swf文件的路径,
uploader 处理上传文件脚本的文件方法路径,这里我是在Image.php这个控制器Controller下的upload方法下进行操作的
buttonText指前端展示的上传按钮上的文字例如:
20170417170544.png
其他就不赘述了看上面那篇文章里有解释。

五、Image控制器下的upload方法进行上传!

<?php

namespace app\api\controller;

use think\Controller;
use think\Request;
use think\File;

class Image extends Controller
{
    public function upload(){
        $file = Request::instance()->file('file');
        //给一个图片保存在服务器的路径
        $info = $file->move('upload');
        //如果有info对象并且图片上传成功路径存在
        if($info && $info->getPathname()){
            return 这里返回成功和图片路径;
        }
    }
}

至此 上传就已经成功了,后面的业务逻辑就看个人了!根据官方给出的事件编写业务逻辑达到想要的目的。

server {
    listen       80;
    server_name  wx.hongxuelin.com;
    index index.html index.htm index.php;
    root /var/www/root/wx.hongxuelin.com/public/;
    set  $root  /var/www/root/wx.hongxuelin.com/public;

    
    location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$
    {
        root $root;
    }

    location / {
        root    $root;
        index    index.html index.php;
        if ( -f $request_filename) {
            break;
        }
        if ( !-e $request_filename) {
            rewrite ^(.*)$ /index.php/$1 last;
            break;
        }
    }


    location ~ .+\.php($|/) {
        fastcgi_split_path_info ^((?U).+.php)(/?.+)$;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
        fastcgi_param    SCRIPT_FILENAME    $root$fastcgi_script_name;
        include /usr/local/nginx/conf/fastcgi.conf;
        fastcgi_pass 127.0.0.1:9000;
    }

    access_log logs/wx_access.log;
    error_log logs/wx_error.log;
}

活动参与人数大概150人左右,然后设计在公众号回复抽奖会随机获得一个一定范围内抽奖码,然后活动现场会在箱子里提前准备好一定范围的抽奖码纸条进行现场抽奖。基于这个需求,第一版代码只是简单的一个循环不断rand取值,回查数据库抽奖码是否产生过,如果是,重新随机rand取值。但这个思路写完就被我否决了= =,因为假设抽奖码产生了一大半了情况下,这样去随机到产生过抽奖码概率是很大的,增加了服务器数据库负担(虽然数据量很小,影响微乎其微),但是假设在数据量巨大上亿的情况下,这个问题如何解决。
于是在百度上一番查找,据random.org资料,将所有的数想象成一个表格?然后随机产生一个数,如果被使用过,那么随机选择上,下,左,右,移动一定的距离决定下一个数字。但是这貌似还是没解决如果范围内数据被用了一大半了,这效率还是很低啊。
在这个活动数据量很小的情况下,先给出解决方案,设计两张表,一张luck表存抽奖码和对应用户信息,一张status表存范围内所有的抽奖码,flag字段标记使用和未使用。每次用户发送抽奖指令,先判断是否抽过,是,则返回属于他的抽奖码,否则进入随机产生抽奖码流程->取出status表中flag为0未使用过的抽奖码,加入到数组,然后在数组中随机抽取一个,然后发送给用户,更新luck和status表最后exit。
但是这个思路在上亿数据面前,肯定不能取出来存数组吧,所以我觉得有必要看看大数据方面的知识?如果看官有好的思路,请指导我或者和我交流!
下面上代码,因为功能简单,直接一个php文件全写了。





阅读全文 »

基于哈夫曼树的原理用java写的一个用来压缩解压图片的控制台小程序。
程序压缩思路大致如下:
1.读取文件字节,转换成int类型数据就是0-255范围内的整型,然后统计出现次数即权重
2.根据权重构造出哈夫曼树,然后生成哈夫曼编码
3.将主要的编码长度,哈夫曼编码表和文件转译成的哈夫曼编码串写入文件即压缩文件。
解压的思路大致如下:
1.读取压缩文件,先读出各编码长度,计算出总长度,然后根据总长度读出哈夫曼编码表。
2.哈夫曼编码的特性编码前缀不重复,然后循环遍历查找哈夫曼编码表转译成字节然后写入文件即解压文件








阅读全文 »

暑假的时候买了几本盗版书,一手抱着手机下载的juicessh远程连接云linux服务器一手抱着linux系统命令及shell脚本实践指南学怎么用linux,还买了深入浅出mysql,学mysql优化,讲道理这两本书都蛮不错的。开学就直接实操linux,把手上所有的站都换成了lamp环境。真的是跌跌撞撞的学,每天一点点的进步,然后现在能流畅操作linux感觉棒棒的。

值得庆幸的是自己从原先的嵌入式专业成功转专业到了网络工程,然后转成功第一周吧,就去上了一节课,第二周吧就去上了两节课,因为自己目标很明确,想学的不是学校教的那些东西,以后能用的也不是学校教的那些东西。最近花了200在慕课网买了thinkphp5的教程,这份教程至少够我学一个月了。慢慢成长,虽然起步慢了别人不止一点是吧,做到对得起自己就好。觉得自己在js,ajax方面还十分生疏,最近就会去深入学习下这方面,然后把tp5掌握下来。这就是暂时的一个小目标。

前几天和班导大人聊了很久,因为毕业想去深圳打代码,于是就看了看深圳IT的一些招聘,大多数就是招java工程师,于是内心的尴尬癌迷茫症又犯了。但是吧,真真学好一门语言,肯定不会差。
最后感谢岸哥这段时间帮助我过上了一段相比以前健康很多的生活!
最后看到这个php技能树,值得学习借鉴!
1442098137-56fd4f4c7ff17_articlex.png