资讯专栏INFORMATION COLUMN

微擎模块开发之FTP上传模块

xiaotianyi / 2514人阅读

摘要:前言公司需要一个新模块用来上传微信验证文件到网站根目录,这里记录下开发过程,供大家参考。

前言

公司需要一个新模块用来上传微信验证txt文件到网站根目录,这里记录下开发过程,供大家参考。

创建新模块

登陆系统 -> 快捷入口 -> 系统管理 -> 扩展 -> 模块管理 -> 设计新模块,步骤如下图:

找到位置后,开始填写表单,因为功能比较简单,填写不多,内容如下:

填写完毕,下方两个选项:

这里看需求吧,我选的是直接生成,方便下一步开发。

查看模块

生成完毕,在系统管理 -> 扩展 -> 模块管理 -> 安装模块 出可找到将其安装。

确定提示,安装完毕后,在 系统管理 -> 扩展 -> 模块管理 -> 已安装模块出可找到

在 营销模块 -> 常用服务和工具 处可找到菜单

点击之后出现 核心功能设置 页面,因为还没开始细致开发,所以暂时是空白的

最后在看看addons目录下生成的文件

各文件作用如下:

template文件夹 存放模板文件夹

module.php 这个文件内容为微擎模块定义, 应为 WeModule 类的派生类. 请参阅(微擎处理流程-模块定义)

manifest.xml 描述文件

preview.jpg 模块封面, 规格为600px*350px

icon.jpg 模块图标, 规格为48px*48px

初步创建模块结束

细致开发 入口菜单

下一步增在核心功能页面增加两个菜单,分别为:上传设置 和 立即上传

打开插件目录下的manifest.xml文件,在节点中新增一个节点,代码如下:


    
        
    

保存,上传,预览:

这里居然没有反应,没错,不管更新多少次缓存,依旧没反应,检查确认文件确实已经上传了,那么为什么呢?

答案是:卸载模块,重新安装即可。

那么卸载安装后,效果如下:

编写功能

就最初程序功能设计来说,相关设置是固定死的了,那么现在只需实现一个功能,就是管理员选择文件上传。

开始第一步,当前模块文件夹下新建site.php文件(微站页面),在template文件夹下新建ftp_do.html(上传操作模板)

site.php代码:

template("ftp_do");
    }
}

ftp_do代码:

{template "common/header"}
hello
{template "common/footer"}

重新安装,查看页面:

ok,说明两个文件和模板指定都是没问题的。

第二步,开始细致编写site.php和ftp_do.html两个文件的代码。

ftp_do.html中就是一个表单,因为没有从微擎提供的函数库中找到file相关方法(只看到了上传图片等相关的函数,如:tpl_form_field_image()),表单还是采用php原始方案吧,省心。

ftp_do.html代码如下:

{template "common/header"}
{template "common/footer"}

然后site.php代码就简单了,限制某些参数,实现上传:

 "没有错误发生,文件上传成功",
        1 => "上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值",
        2 => "上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值",
        3 => "文件只有部分被上传",
        4 => "没有文件被上传"
    ];

    /**
     * Ftp具体上传操作
     */
    public function doWebDo()
    {
        if ($_POST["sub"]) {
            $file = $_FILES["thefile"];
            if ($file) {
                // 若所有检测都通过
                if ($this->_checkError($file["error"]) &&
                    $this->_checkMaxSize($file["size"]) &&
                    $this->_checkFileType(pathinfo($file["name"])) &&
                    $this->_chekFileIsExists($file["name"]))
                {
                    if (move_uploaded_file($file["tmp_name"], IA_ROOT."/".$file["name"])) {
                        echo "";
                    } else {
                        echo "";
                    }
                }
            }
        }
        include $this->template("ftp_do");
    }

    /**
     * 检测文件上传是否出错
     *
     * @param $error_code
     * @return bool
     */
    private function _checkError($error_code)
    {
        if ($error_code > 0) {
            echo "";
            return false;
        }
        return true;
    }

    /**
     * 检测文件大小是否符合要求
     *
     * @param $size
     * @return bool
     */
    private function _checkMaxSize($size)
    {
        if ($size > $this->_max_size) {
            echo "";
            return false;
        }
        return true;
    }

    /**
     * 检测文件格式是否符合要求
     *
     * @param $type
     * @return bool
     */
    private function _checkFileType($type)
    {
        if ($type["extension"] != $this->_file_type) {
            echo "";
            return false;
        }
        return true;
    }

    /**
     * 检测文件是否已存在
     *
     * @param $filename
     * @return bool
     */
    private function _chekFileIsExists($filename)
    {
        if (file_exists("/".$filename)) {
            echo "";
            return false;
        }
        return true;
    }
}

代码完成,开始操作:

上传成功,查看ftp验证:

Ok!搞定了。

总结

作为一个用于上传txt验证文件的模块,到此为止就开发完了,仔细算起来,其实没什么东西,功能就是一个简单的上传,因为是以前没弄过微擎的模块,网上资料不是太多,所以稍微饶了点弯,希望这篇文章对大家开发模块有帮助吧。

下载

GitHub地址:https://github.com/qingye5786...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/30579.html

相关文章

  • 微擎中使用微信门接口,让订阅号也能直接以网页的方式获取OpenID

    开发微擎模块的时候 常会遇到一个问题:只有服务号才能直接在网页上获取OpenID,如果是订阅号就只能从对话消息中获取OpenID然后传到网页,虽然微擎有个功能叫做借用oAuth权限,但是有时候连借都没地方借,怎么办呢?还好这是个互联网时代,有需求,就会有服务。微信之门就是为此而生的,转发一下他们的简介: 微信打开的网页,是无法持久存贮 cookies 的,你知道吗? 那么如何辨识唯一用户呢?是的,...

    Imfan 评论0 收藏0
  • python初学——网络编程FTP服务器支持多并发版本

    摘要:扩展支持多用户并发访问与线程池。项目请见初学网络编程之服务器。不允许超过磁盘配额。该文件是一个使用模块编写的线程池类。这一步就做到了线程池的作用。 对MYFTP项目进行升级。扩展支持多用户并发访问与线程池。MYFTP项目请见python初学——网络编程之FTP服务器。 扩展需求 1.在之前开发的FTP基础上,开发支持多并发的功能2.不能使用SocketServer模块,必须自己实现多线...

    oysun 评论0 收藏0
  • python初学——网络编程FTP服务器

    摘要:并可以实现,功能对用户进行磁盘配额,每个用户的可用空间不同使用模块检查用户目录的空间上文件大小,如果大于就不让传输。不允许超过磁盘配额。文件的传输过程中显示精度条。用户价值实现一套自己的服务端与客户端。 MYFTP是我写的模拟FTP服务端和客户端交互的程序。通过使用socket去模拟ftp的文件下载与上次两个核心功能。并不是使用真实FTP协议去实现。 基本需求 用户加密认证 # ha...

    TZLLOG 评论0 收藏0
  • 如何通过curl完成一些功能

    摘要:例如模拟表单向某个地址发送数据在无验证码的情况下模拟表单完成用户登陆上传某个文件到远程服务器请求远程服务器提供的某些功能支持和协议。我们在使用过程当中,如果没有基础根本不知道如何开发微信公众号。 微信微博公众号、QQ公众号、地图和很多的第三方功能提供都是采用http 的API(应用程序)形式向开发人员提供的功能。 如果你只希望能够做些简单的微信公众号、QQ公众号等小应用,深入学习PHP...

    Java_oldboy 评论0 收藏0
  • Vue ES6 Jade Scss Webpack Gulp

    摘要:主有前端后端,并加,各一名。本着工欲善其事,必先利其器的理念,一直以来在工作效率这块,略怀执念一个问题不应该被解决两次。下图为开发项目机制所涉及到的插件工欲善其事,必先利其器,语言,框架皆可以归结为器而不当仅局限于开发工具以及机。 原文链接: http://www.jeffjade.com/2016/05/08/106-vue-es6-jade-scss-webpack-gulp/ 一...

    rickchen 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<