我刚刚将此插件附加到我的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}',
..
但是我不能修改我的模型的路径参数,在这里我可以改变它,工作得很好。
对于文件上传是足够的原始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