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

时间:2015-04-26 11:03:04

标签: php cakephp

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

我花了很多时间才意识到它是将文件上传到 webroot \ files \ model_name \ filename文件夹,起初我认为没有上传文件。 数据库看起来像:

ID | DESCR |文件名|文件路径

我尝试了一切修改输入参数,但没有发生任何事情是将文件一遍又一遍地复制到:webroot \ files \ model_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(

我花了很多时间找到解决方案(在沙发上,到处都是谷歌)。但是我不知道为什么我无法更改上传文件夹..

UPDATE1: 做了一个小小的研究:

class UploadBehavior extends ModelBehavior {

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

但是我不能通过我的模型修改路径参数,在这里我可以改变它并且效果很好。

1 个答案:

答案 0 :(得分:0)

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

以下是示例表单:

    [HttpPost]
    [album]
    public ActionResult Contact2(string one, string two)
    {
        var req = this.Request;
        var res = this.Response;

        UriBuilder uriBuilder = new UriBuilder("http://" + req.Url.Authority + req.Url.LocalPath);
        NameValueCollection query = HttpUtility.ParseQueryString(uriBuilder.Query);
        query.Add("album", "first");
        uriBuilder.Query = query.ToString();

        string url = req.Url.AbsolutePath.ToString();
        return this.Redirect(uriBuilder.Uri.OriginalString);            
    }

和php方法:

<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>

但在CakePhp中,您必须使用$ this-&gt; request-&gt;数据,而不是$ _FILES,因为:

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

有关详细信息,请查看http://www.w3schools.com/php/php_file_upload.asp