1

Zend で次のようなものを使用する場合:

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

アップロードされたファイルは、最初に tmp ディレクトリにアップロードされ、検証されてから「some/directory」に移動されますか、それとも setDestination ディレクトリに直接保存されますか? 前者の場合、これは tmp dir にアップロードされた後、「move_uploaded_file」と同じことを行うように思えます。

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 に答える