使用CakePHP创建File对象

时间:2018-01-10 17:21:19

标签: php file cakephp

我正在使用CakePHP做一个pŕoject。在这个项目中,我需要读取一个ips文件,将其添加到我的数据库中。只使用PHP我可以读取文件等,但是当我尝试使用CakePHP时,它是最干净的工作。

我的.ctp文件中的代码:     

echo $this->Form->Create(null, ['type' => 'file', 'url' => ['controller' => 'Ips', 'action' => 'file']]);
echo '<br>' . '<br>';
?>

<div>
<div class="btn indigo darken-3"> 
Informe o Arquivo:
</div>
<div class="btn indigo darken-3">
    <?php
    echo $this->Form->file('file') . '  ';
    ?>
</div>

<?php
echo $this->Form->button('Enviar', ['class' => 'btn indigo darken-3']);
echo $this->Form->end();
?>

来自我的控制器的代码:

    public function file() {

       $file_ip = $this->request->data['file'];
       $file_cake = new File($file_ip, true);
       print_r($file_cake);
       exit();
    }

它返回:

Cake\Filesystem\File Object
(
    [Folder] => Cake\Filesystem\Folder Object
       (
        [path] => /*/*/*/rbl_check/tmp/
        [sort] => 
        [mode] => 493
        [_fsorts:protected] => Array
            (
                [name] => getPathname
                [time] => getCTime
            )

        [_messages:protected] => Array
            (
            )

        [_errors:protected] => Array
            (
            )

        [_directories:protected] => 
        [_files:protected] => 
    )

[name] => 
[info] => Array
    (
        [dirname] => /*/*/*/rbl_check
        [basename] => tmp
        [filename] => tmp
        [filesize] => 
        [mime] => 
    )

[handle] => 
[lock] => 
[path] => /*/*/*/*/tmp/
)

如何创建文件对象以及我如何阅读它?我不能使用新的SplFileObject(),蛋糕返回错误。

2 个答案:

答案 0 :(得分:0)

$file_cake = new File($file_ip, true);

创建一个文件对象。它是一个方便的蛋糕类。确保你使用

use Cake\Filesystem\File;

我假设你是,因为对象是创建的。 要使用该对象,请尝试这些方法

$contents = $file_cake->read(); //dumps the file's content in a string
$file_cake->append('moo'); //append text at the end of the file
$file_cake->write('moo'); //overwrites the files content...
$file_cake->delete(); // deletes the file
$file_cake->close(); //... you get it...

答案 1 :(得分:0)

您可以使用一些php本地代码,以防万一,目的只是生成文件,我无数次试图使用cakephp方法来做到这一点,无论如何,这是一个示例:

$content = "SOME DATA";
$fp = fopen( "folder/whatevernameyouwant.extension","wb");
fwrite($fp,$content);
fclose($fp);