如何正确看待软件开发技术外包价格的高低

软件外包这个事,随着需求的不同,价格区间跨度本来就是会相当大。一个软件有报几千的,也有报几万的,差距相当大,一个网站,一款软件或者一个完整的系统,其结构功能复杂与否首先只能确定其价格底线。多数的企业只考虑表面的代码开发费用,至于后期的方案是否可以匹配上业务、运营和维护几乎都没有考虑。

一心只通过价格来选择开发人员,也就容易在后期跟外包方产生纠葛,而通常在这样的状况下,基本上所开发出的软件或者系统,也就不太可能运营出效果,反而浪费了企业发展的时间。这样算下来,为了当初省去的几万块钱,而赔掉了可能几十万,几百万,甚至几千万的市场,想想还真是得不偿失。

阅读更多

用 MiniFramework 实现文件上传功能

MiniFramework 是一款遵循 Apache2 开源协议发布的,支持 MVC 和 RESTful 的超轻量级 PHP 开发框架。

在 MiniFramework 最新的版本中,提供了上传文件的特性,下面我们来演示一下实现过程。

首先,新建一个名为 Upload 的 Controller,并在其中新建一个名为 index 的 Action,代码如下:

<?php
namespace App\Controller;

use Mini\Upload;

class Upload extends Action
{
    function indexAction()
    {
        if (! empty($_FILES)) {
            
            // 实例化 Upload 类
            $upload = new Upload();
            
            $res = $upload->save($_FILES['f']);
            if (! $res) {
                $errmsg = $upload->getErrorMsg();
                echo $errmsg;
            } else {
                dump($res);
            }
        }
        
        $this->view->display();
    }
}

上边的代码中,通过 use Mini\Upload; 引入了 MiniFramework 框架所提供的一个用于文件上传的类库。

在实例化 Upload 类后,通过调用 save 方法,并将 PHP 的 $_FILES 传入,来实现上传文件的保存。

在调用 save 方法后,若文件保存失败,可以通过 getErrorMsg 方法来获取错误信息。

如果文件保存成功,那么 save 方法会返回一个数组,其中包含有文件保存的路径和文件名,上边的示例代码中使用了 MiniFramework 内置的全局函数 dump() 来输出 save 所返回的数组。

另外,在实例化 Upload 类时,可传入一个数组类型的参数,对文件保存路径、大小和类型进行设定,例如:

// 配置数组
$config = array(

    // 文件保存的根目录
    'rootPath'  => PUBLIC_PATH . '/uploads',

    // 文件的大小限制(单位:Byte)
    'maxPath'   => 512000,

    // 允许的类型
    'allowType' => 'bmp,gif,jpg,jpeg,png'

);

// 实例化 Upload 类时,将配置数组作为参数传入
$upload = new Upload($config);

上边的代码中,常量 PUBLIC_PATH 是 MiniFramework 内置用于定义站点根目录所对应的路径,默认对应的是 Public 目录所在的路径

接下来创建视图,在 View 目录中创建一个名为 upload 的目录,将视图文件保存到 View/upload/index.php,代码如下:

<h1>Upload</h1>
<form method="post" enctype="multipart/form-data">
  <input type="file" name="f" >
  <input type="submit" value="upload" /></p>
</form>

完成上述步骤后,便可以访问类似下面的地址来测试了
http://你的域名/index.php?c=upload&a=index

如果你的站点开启了伪静态,那么访问地址可以是下面这样:
http://你的域名/upload/index

上边的 URL 中,最后的 index 可以省略,例如:
http://你的域名/upload

阳光部落原创,更多内容请访问http://www.sunbloger.com/