远控开发记录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);
            }
        }
    }

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

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

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

相关文章推荐

探索ORACLE之RMAN_06备份策略

探索ORACLE之RMAN_06备份策略 作者:吴伟龙   在前几次的博文中已经谈完了备份的所有内容,但是为了更加适应企业的自动备份化需求在今天的课程中可以谈谈如何构建和规划一个可以实现自动对数...

06-Windows Server 2012 R2 会话远程桌面-标准部署-RD网关(RemoteApp)

Windows Server 2012 R2 会话远程桌面-标准部署-RD网关(RemoteApp) 马博峰 一、什么是RD网关 远程桌面网关(RD 网关),在早期版本的远程桌面连接中称为TS网...

远程服务器返回错误: (401) 未经授权 解决方案2007-04-06 13:441、错误号401.1

1、错误号401.1  症状:HTTP 错误 401.1 - 未经授权:访问由于凭据无效被拒绝。  分析:  由于用户匿名访问使用的账号(默认是IUSR_机器名)被禁用,或者没有权限访问计算机,...

zero远控_06

  • 2016-12-21 16:34
  • 156KB
  • 下载

远程备份脚本

Linux通过脚本实现远程自动备份

考虑到在本机上备份数据,一旦该机器硬盘出现故障,数据无法取出。远程手动备份数据费时费力且不及时。最好的方法就是通过脚本实现远程自动互备。但远程无论是通过SSH登陆,还是通过scp拷贝文件都需要输入密码...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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