十月cms上传文件

Posted

技术标签:

【中文标题】十月cms上传文件【英文标题】:Octobercms Upload Files 【发布时间】:2016-09-11 21:57:29 【问题描述】:

如何解决错误?

这是我的 htm 代码(按钮上传)

 form_open(files: true, request: 'onFileUpload') 

<!--File Input-->
<input type="file" name="file-upload" required="required">
<!--File Input-->

<!--Submit/Upload Button-->
<button type="submit">Upload</button>

 form_close() 

这是组件的php代码

     public function onFileUpload()

    $file = new System\Models\File;
    $file->data = Input::file('file-upload');
    $file->save();

    // Attach the uploaded file to your model
    $model->file()->add($file); 
   // The above line assumes you have proper attachOne or attachMany relationships defined on your model

    $model->file_path = url('/') . $model->file->getPath();
    $model->save();

    return Redirect::back();

这是正确的 attachMany 关系吗?

public $attachMany = [
'files' => 'System\Models\File',
];
    

我不太确定代码,因为我是 10 月 cms 的新手 任何人都可以举一些例子吗? 如何创建拖放文件上传器组件?

【问题讨论】:

正如错误所说:您正试图向 $model->file() 添加一些内容,但从未启动变量 $model。所以 $model 在那一点上什么都不是。 我添加了这个 $model = new Uploadedfile;( 【参考方案1】:

您需要新建一个已在其中定义关系的模型实例,并将其设置为您的 $model 变量。

例如..您的模型类可能如下所示。

class User extends Model

    public attachMany [
        'files' => 'System\Models\File'
    ];

然后在你的组件中 onFileUpload()

$model = new User;
$model->files()->add($file); 
$model->file_path = url('/') . $model->file->getPath();
$model->save();

另外,请注意模型类中的 attachMany 关系被定义为文件,但您正在尝试将其与

$model->file()->add();

应该是

$model->files()->add();

【讨论】:

以上是关于十月cms上传文件的主要内容,如果未能解决你的问题,请参考以下文章

WellCMS 2.0 Beta3 后台任意文件上传

快排CMS-文件上传漏洞

十月 CMS 组件加载布局

[代码审计]极致CMS1.9.5存在文件上传漏洞

[代码审计]极致CMS1.9.5存在文件上传漏洞

十月CMS发布表格