2018年11月

利用PHP对文件进行下载:

  public function download(){
       $file = './public/Uploads/fileuri';   //下载文件存放目录  
       if (file_exists($file)) {
           header('Content-Description: File Transfer');
           header('Content-Type: application/octet-stream');
           header('Content-Disposition: attachment; filename="'.basename($file).'"');
           header('Expires: 0');
           header('Cache-Control: must-revalidate');
           header('Pragma: public');
           header('Content-Length: ' . filesize($file));
           readfile($file);
           exit;
       }else{
           echo "文件不存在";
       }

   }

  1. 首先在项目模块下的Common文件夹内建立function.php文件,这样就可以首先执行这里的函数了。所以在这里判断是否是移动端访问的,判断方法如下:

     function ismobile() {
    // 如果有HTTP_X_WAP_PROFILE则一定是移动设备
    if (isset ($_SERVER['HTTP_X_WAP_PROFILE']))
        return true;
    
    //此条摘自TPM智能切换模板引擎,适合TPM开发
    if(isset ($_SERVER['HTTP_CLIENT']) &&'PhoneClient'==$_SERVER['HTTP_CLIENT'])
        return true;
    //如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
    if (isset ($_SERVER['HTTP_VIA']))
        //找不到为flase,否则为true
        return stristr($_SERVER['HTTP_VIA'], 'wap') ? true : false;
    //判断手机发送的客户端标志,兼容性有待提高
    if (isset ($_SERVER['HTTP_USER_AGENT'])) {
        $clientkeywords = array(
            'nokia','sony','ericsson','mot','samsung','htc','sgh','lg','sharp','sie-','philips','panasonic','alcatel','lenovo','iphone','ipod','blackberry','meizu','android','netfront','symbian','ucweb','windowsce','palm','operamini','operamobi','openwave','nexusone','cldc','midp','wap','mobile'
        );
        //从HTTP_USER_AGENT中查找手机浏览器的关键字
        if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT']))) {
            return true;
        }
    }
    //协议法,因为有可能不准确,放到最后判断
    if (isset ($_SERVER['HTTP_ACCEPT'])) {
        // 如果只支持wml并且不支持html那一定是移动设备
        // 如果支持wml和html但是wml在html之前则是移动设备
        if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html')))) {
            return true;
        }
    }
    return false;
    }
    
  2. 然后再建议一个公共的控制器,里面继承一个公共的控制器,里面设置一个前置方法,判断如果是移动端的就直接显示移动端的主题,然后建立一个主题文件夹Mobile,里面放主题文件。

    class PublicController extends Controller{
    public function _initialize(){
         if (ismobile()) {
            //设置默认默认主题为 Mobile
            C('DEFAULT_V_LAYER','Mobile');
        }
     }
     }
  3. 只需要在使用模板的地方继承公共的控制器就可以了。

     class IndexController extends PublicController {
    public function index(){
         $this->display();
    }
     }

  1. 引入依赖包

    import Geolocation from 'Geolocation';
  2. 调用方法

    //获取经纬度的方法 
    getLongitudeAndLatitude = () => {
        //获取位置
        return new Promise(() => {
    
            Geolocation.getCurrentPosition(
                location => {
                    //可以获取到的数据
                    var result = "速度:" + location.coords.speed +
                        "\n经度:" + location.coords.longitude +
                        "\n纬度:" + location.coords.latitude +
                        "\n准确度:" + location.coords.accuracy +
                        "\n行进方向:" + location.coords.heading +
                        "\n海拔:" + location.coords.altitude +
                        "\n海拔准确度:" + location.coords.altitudeAccuracy +
                        "\n时间戳:" + location.timestamp;
                    console.log(result);
                },
                error => {
                    console.log("失败")
                }
            );
        })
    }

1.在componentWillMount

 componentWillMount() {
        this.backHandler && this.backHandler.remove();
    }

2.在componentDidMount

componentDidMount() {
    this.backHandler = BackHandler.addEventListener('hardwareBackPress',
        this.onBackButtonPressAndroid);
}

3.退出函数

  onBackButtonPressAndroid = () => {
        if (this.props.navigation.isFocused()) {
            if (this.lastBackPressed && this.lastBackPressed + 2000 >= Date.now()) {
                //最近2秒内按过back键,可以退出应用。
                return false;
            }
            this.lastBackPressed = Date.now();
            NRJCore.toast("再按一次退出");
            return true;
        }

    }

获取当前时间戳

time();

时间戳转换成时间

date(format,timestamp)

参数:
format 必需。规定时间戳的格式。
timestamp 可选。规定时间戳。默认是当前时间和日期。
timestamp的参数

  • Y :年(四位数)
  • m : 月(两位数,首位不足补0)
  • d :日(两位数,首位不足补0)
  • H:小时,带有首位零的 24 小时小时格式
  • h :小时,带有首位零的 12 小时小时格式
  • i :带有首位零的分钟
  • s :带有首位零的秒(00 -59)
  • a:小写的午前和午后(am 或 pm)

日期转时间戳

strtotime

获取带有毫秒的时间戳

PHP默认是不带有直接获取带有毫秒的时间戳的,我们只能转换成粗略的带有毫秒的时间戳。

 function getMillisecond(){
        list($s1,$s2)=explode(' ',microtime());
        return (float)sprintf('%.0f',(floatval($s1)+floatval($s2))*1000);
    }

Vue-Cli3.0没有了config文件夹,默认也没有配置文件,这些都是需要我们手动进行建立的,首先我们需要在项目根目录里面建议一个vue.config.js的文件,名字必须是vue.config.js。然后在这个js文件里面进行配置,小编在下面简单介绍几个常用的配置,以及写法:

module.exports={
    baseUrl:'/',//根路径
    outputDir:'dist',//构建输出目录
    assetsDir:'assets',//静态资源目录
    lintOnSave:false,//是否开启eslint保存检测,有效值:true || false || 'error'
    devServer:{
        open:true,//是否自动打开页面
        host:"127.0.0.1",//主机名(真机测试0.0.0.0)
        port:8081,//端口号
        https:false,//是否开启https
        hotOnly: false,//热更新
        proxyL:{
            //配置跨域
            '/api':{
                target:'http://localhost:5000/api',
                ws:true,
                changeOrigin:true,
                pathRewrite:{
                    '^/api':''
                }
            }
        },
        before(app){
            //在服务内部所有中间件之前执行的印个内容
            app.get('/api',(req,res)=>{
                res.json();
            })
        }
    }
}

做新时代的“懒人”?

作者:王朝辉

做懒人,坚决不可以。为什么呢?让我们来一个字一个字的分析。
首先,懒,坚决不能懒,为什么,俗话说:懒惰就是死亡!不知道大家有没有骑自行车上下过桥。我们上桥时,是不是非常的辛苦,但下桥时却非常的累,尤其秋天是在一个温暖的午后,秋分阵阵,一个长长的下坡让秋分的惬意更加无死角的体现,就是这样的感觉,会留恋,甚至会上瘾,但是,就是在你留恋,在你上瘾的时候,你有没有在想,我是非常的舒服了,但是我是在走下坡路啊。这到底是不是一个巧合,当你享受时,你是在走下坡路。所以,懒就是堕,堕就是落,落就是后,后就是悔,毁就是灭,灭就是亡,懒惰就是灭亡。

1.jpg

图1
我们再来看一下人,人,要做一个男人,我认为一个男人,首先,要有担当,在者,要有军人的无畏精神。
有这么一件事儿,一个非常非常好的大学学子,他成功获得了留学的机会,一切都是很好的,对于一个农村孩子来说,这真的是件让人羡慕的事情。他的一些长辈就在那所城市打工,听说后,非常开心。把他叫出来,就去了一个饭馆吃饭,吃饭当然喝酒了,常言道,喝酒易出事儿,果真,他们喝完酒出来就看见一个小姑娘,几个长辈就借着酒劲拦住了那个姑娘,这一拦,把那姑娘就吓坏了,顿时,哭了起来,俗话说:女人一哭,梨花满面。这一哭,让几个人就有了侵犯那女孩儿的意图。这时,那个学生上前求情说算了吧,这样不好。结果他的长辈顿时开始骂他,让他一边呆着去,他怕了,就退到一边,就当他们脱女孩儿衣服时,警车来了。一通全部抓走,统一定罪:强奸未遂。那警察为什么会来呢?电话其实就是那个学生打的,但是他不敢说,怕得罪长辈。到头来罪责相同,令人惋惜。

2.jpg

图2
单说这件事,应该怎么做,当然是不管你的长辈,必须强硬的站出来制止他们的行为,但这需要一种力量,一种敢于担当的精神,而这精神正是我们当代大学生所需要的。
那军人的无畏精神呢。我们从小就听邱少云,董存瑞的故事,但我们毫无怀疑的相信吗?我们真的能为正义做到无畏吗?这些问题,每人的回答是不一样。在这,我给大家分享一个退役军人所亲眼看到的故事。
再一次军事演习中,蓝方需要导弹坐标。就派了一个小分队就采集坐标,其中一个年轻的小伙子说:我还没见过导弹发射呢,这次能看见吗?有人笑着回答说:肯定能,你们完事儿后,就往天上看就行。这个小分队出发了。变故不知何时而来,在这个小伙子即将完成任务的时候。突然对面的一辆装甲坦克就向他开了过来,他不敢动。一动就会暴露目标。就这样,一百米,他没动。五十米,他没动。五米,他还没动。指挥厅里大喊,他最后回了下头,车就从他身上压了过去。导弹发射的很准。去现场已经找不到他的残骸。指挥厅的每个人都哭了,那是一种震撼,他们第一想到的是。邱少云,董存瑞他们是真的。真的有无畏的人。

3.jpg
图3

我当时听完非常震撼,我们如果做到无畏,那个国家敢说我们的不,我们做到无畏,什么事情做不成。当然,我们为何而无畏是前提。
在当代,我们应该找好定位,做一个勤奋的男人,而不是懒人。