1

在 Zend 中使用这样的东西时:

$upload = new Zend_File_Transfer_Adapter_Http();
$upload->setDestination('/some/directory');
$upload->addValidator(x)
->addValidator(y);
$upload->receive();

上传的文件是先上传到 tmp 目录,经过验证然后移动到 'some/directory' 还是直接保存到 setDestination 目录?如果是前者,在我看来,这与“move_uploaded_file”在上传到 tmp 目录后的作用相同。

ZF 是否提供某种类型的 http 流处理程序来将文件本地写入特定目录?即类似于nodejs 或django 的东西?

4

1 回答 1

2

Zend_File_Transfer_Adapter_Httpmove_uploaded_file在您分配的验证器验证后使用。

这里

public function receive($files = null)
{
    if (!$this->isValid($files)) {
        return false;
    }
    ... some code ...

    if (!move_uploaded_file($content['tmp_name'], $filename)) {
        if ($content['options']['ignoreNoFile']) {
            $this->_files[$file]['received'] = true;
            $this->_files[$file]['filtered'] = true;
            continue;
        }

        $this->_files[$file]['received'] = false;
        return false;
    }

没有特殊的机制,它只是标准函数的包装

对于直接上传到您的目录,您可以使用类似

$input = fopen("php://input", "r");
$file = fopen("/my/directory/filename.eee", "w");
while ($data = fread($input, 1024)){
    fwrite($file, $data);
}

但在 ZF 中似乎不是这样的

于 2012-03-12T19:48:39.943 回答