提问者:小点点

cakephp上传插件没有可以更改的输入参数


我刚刚将此插件附加到我的cakephp项目:https://github.com/josegonzalez/cakephp-upload.

我花了很多时间才意识到将文件上传到webroot\files\model\u name\filename文件夹是件好事,起初我以为没有上传任何文件。数据库看起来像:

ID | descr | filename | filepath

我试图修改输入参数,但什么也没发生,只是一次又一次地将文件复制到:webroot\files\model\u name\filename。我试图清空缓存,但也不起作用。

 public $actsAs = array(
    'Upload.Upload' => array(
        'path' => '{ROOT}{DS}webroot{DS}img{DS}{model}{DS}{field}{DS}',
        'filename'=> array(

    )
);

也:

        public $actsAs = array(
    'Upload.Upload' => array(
        'filename'=> array(
        'path' => '{ROOT}{DS}webroot{DS}img{DS}{model}{DS}{field}{DS}',        
            )
    )
);

也:

     class User extends AppModel {
        public $actsAs = array(
            'Upload.Upload' => array(
                'filename' => array(
                    'fields' => array(
                        'dir' => 'photo_dir'
                    )
                )
            )
        );

}

在这一点上,我认为它根本不起作用。所以我修改了文件名,但出现了sql错误,所以它必须一直工作到:

'Upload.Upload' => array(
'filename' => array(

我花了很多时间寻找解决方案(在sof,谷歌无处不在)。但是我不知道为什么我不能改变上传文件夹...

更新1:做了一个小研究:

class UploadBehavior extends ModelBehavior {

public $defaults = array(
    'rootDir' => null,
    'pathMethod' => 'primaryKey',
    'path' => '{ROOT}webroot{DS}files{DS}{model}{DS}{field}{DS}',
..

但是我不能修改我的模型的路径参数,在这里我可以改变它,工作得很好。


共1个答案

匿名用户

对于文件上传是足够的原始PHP,只需创建一个包含一个或多个类型文件输入的属性enctype="Multipart/form-data"的表单,并使用简单的php方法"move_uploaded_file"将其保存到您喜欢的位置。

以下是示例表格:

<form action="yourscript.php" method="post" enctype="multipart/form-data">
    <input type="file" name="fileToUpload" id="fileToUpload">
    <input type="submit" value="Upload File" name="submit">
</form>

php方法:

move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], 'yourpreferredpath/yourfile')

但是在CakePhp中,必须使用$this而不是$u文件-

$this->request->data["fileToUpload"]["tmp_name"]

有关更多信息,请参阅http://www.w3schools.com/php/php_file_upload.asp