【第22期】观点:IT 行业加班,到底有没有价值?

远控开发记录06_远程备份

原创 2016年08月30日 16:36:39

远控系统支持远程备份知己手机的文件。
由于之前开启服务时已经将文件信息,包括路径存到了数据库中,若要备份文件,则将数据库信息拷贝到备份数据库中,并依据路径上传对应的文件到服务器。测试时,每种文件类型都选择一个文件进行备份操作。点击下方的备份文件按钮如图

这里写图片描述

这里写图片描述

这里写图片描述

web端点击备份按钮响应函数代码如下:

 public function beifen()
    {
        $often = D('often');
        $upload = D('upload');
        $text['text'] = $_POST['text'];
        $path = $often->where($text)->find();
        $mark['mark'] = 'beifen';
        $mark['beipath'] = $path['path'];
        if (!empty($mark['beipath'])) {
            $this->pushtree($mark);
        }
        echo '1';
    }

这个web后台的代码。这里要给大家讲一个技术。就是为什么点击在web端点击按钮,就能备份文件。我给大家理一下。
web端按钮被点击。服务器就会发送一个消息到你的手机,手机监听到这个消息,根据消息做出响应。这里就是文件上传。因此完成操作。
但是,服务器怎么向手机发送消息。手机又如何来响应这个消息。这就是我要讲的一个重点,云推送技术。也就是上述代码的pushtree函数的实现。
通常来说,是手机客户端主动与服务器通信,服务器做出响应。然而推送技术就可以实现服务器主动与客户端通信。


笔者这里以个推云推送为例。打开个推网站 http://www.getui.com/
注册一个账号,成为个推开发者。登记应用获取必要的id和key

这里写图片描述

点击文档中心。查看使用说明。在web端后台和安卓客户端均要使用个推才能完成推送和响应。

点击http://docs.getui.com/mobile/android/androidstudio/可查看在Android studio下如何集成个推的sdk。

点击http://docs.getui.com/server/php/start/可查看在php环境下使用个推。

推送的方式用很多种。这里笔者选择透传消息推送。当消息发送至手机,手机上的广播监听到该消息,进行相应。下面是响应函数,即是文件上传的函数。

public static void Upload(String filename) throws FileNotFoundException {
        AsyncHttpClient httpClient = App.httpClient;
        RequestParams params = new RequestParams();
        File file = new File(filename);
        params.put("file", file);
        params.put("ClientID", App.cid);
        Log.v("hello", file.getName());
        String url = App.host + "/home/user/Upload";
        httpClient.post(url, params, new AsyncHttpResponseHandler() {
                    @Override
                    public void onSuccess(int i, Header[] headers, byte[] bytes) {
                        if (i == 200) {
                            Log.v("hello", new String(bytes));
                        } else
                            Log.v("hello", "not200");
                    }

                    @Override
                    public void onFailure(int i, Header[] headers, byte[] bytes, Throwable throwable) {
                        Log.v("hello", new String(bytes));
                    }
                }
        );
    }

代码上的”/home/user/Upload”后台函数是php的文件上传接口。代码如下:

 public function Upload()
    {
        $tab = D('upload');
        $user = D('user');
        $cid['ClientID'] = $_POST['ClientID'];
        $uid = $user->where($cid)->find();
        $upload = new \Think\Upload();
        $upload->rootPath = './';
        $upload->savePath = 'Public/Uploads/';
        $upload->saveName = $upload->name;
        $upload->replace = true;
        $info = $upload->upload();
        if (!$info) {
            echo $upload->getError();
        } else {
            foreach ($info as $file) {
                $data['text'] = $file['savename'];
                $data['path'] = $file['savepath'] . $file['savename'];
                $data['userid'] = $uid['No'];
                if (!$tab->where($data)->find())
                    $tab->add($data);
                else
                    $tab->save($data);
            }
        }
    }

笔者这里将代码编写成支持多文件上传。文件上传后将保存在服务器的文件路径记录在数据库。为后面的下载做铺垫。
至此,文件的备份就到此结束。

我是搬运工,热爱我的热爱

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

Git 教程 - Git 基本用法

目录(?)[+] Git 教程 - Git 基本用法 您的评价:          收藏该经验 Git 是当前最流行的版本控制程序之一,文本包含了 Git 的一些基本用法 创...

微信公众账号开发

微信开发 <div class="entrylistPosttitle" style="margin

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

虚幻开发工具包发布版本的版本信息

文档概要: 虚幻开发工具包发布版本的主要改变记录。 虚幻开发工具包发布版本的版本信息 概述编译支持UDK 版本最新版本 5月份UDK Beta版本的升级信息 ...

微信公众平台开发

<a target="_blank" id="Categ

编程新手导论(转载)

第二部分 导论,这一部分主要是关于编程的导论, (要懂得一点思想具备一点常识)《设计,编码,,与软工》(编程与思想)这一章解释了三种思想,原语,抽象,组合,,和软件开发的二个重要过程,,软件工程的相关概念,是编程入门的关键 (要懂得一点领域内的数学)《数学与算法》(编程与数学)计算机整个就是架构...
  • mmdev
  • mmdev
  • 2012-01-22 10:26
  • 783
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)