首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用cakephp3保存图像

用cakephp3保存图像
EN

Stack Overflow用户
提问于 2015-06-30 22:04:45
回答 1查看 1.7K关注 0票数 1

我想通过表单保存图像路径,但是没有保存图像的路径。

我试过用,但我不知道该把代码放在哪里

MultimediaController:

代码语言:javascript
复制
public function add()
{
    $multimedia = $this->Multimedia->newEntity();
    if ($this->request->is('post')) {
        $multimedia = $this->Multimedia->patchEntity($multimedia, $this->request->data);

        $file = $_FILES['url'];
        $path = 'files/' .$_FILES['url']['name'];
        move_uploaded_file($this->data['url']['tmp_name'], $path);



        if ($this->Multimedia->save($multimedia)) {
            $this->Flash->success('The multimedia has been saved.');
            return $this->redirect(['action' => 'index']);
        } else {
            $this->Flash->error('The multimedia could not be saved. Please, try again.');
        }
    }
    $categories = $this->Multimedia->Categories->find('list', ['limit' => 200]);
    $this->set(compact('multimedia', 'categories'));
    $this->set('_serialize', ['multimedia']);

}

add.ctp

代码语言:javascript
复制
 <?= $this->Form->create($multimedia, array('enctype' => 'multipart/form-data')); ?>
<fieldset>
    <legend><?= __('Add Multimedia') ?></legend>
    <?php
        echo $this->Form->input('title');
        echo $this->Form->input('description');
        echo $this->Form->input('mime_type');
        echo $this->Form->input('filename');
        echo $this->Form->input('url', array('type' => 'file'));

        echo $this->Form->input('category_id', ['options' => $categories]);
        echo $this->Form->input('created_by');

    ?>
</fieldset>
<?= $this->Form->button(__('Submit')) ?>
<?= $this->Form->end() ?>

我刚接触过cakephp 3,有点迷失了。请帮帮忙。

更新

已经实现以保存图像:

代码语言:javascript
复制
 $file = $_FILES['url'];
        $path = "webroot\\files\\" .$_FILES['url']['name'];
        print_r($file);
        move_uploaded_file($_FILES['url']['tmp_name'], $path);

        if ($this->Multimedia->save($multimedia)) {
            $this->Flash->success('The multimedia has been saved.');
            return $this->redirect(['action' => 'index']);
        } else {
            $this->Flash->error('The multimedia could not be saved. Please, try again.');
        }

但是现在"url“没有保存在数据库中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-13 10:18:09

我希望这对您有所帮助,这里的脚本有一些改进,比如对数组使用简短的减速:

主计长代码:

代码语言:javascript
复制
//don't forget to import the Folder class
use Cake\Filesystem\Folder;

public function add()
{
    $multimedia = $this->Multimedia->newEntity();
    if ($this->request->is('post')) {
            $multimedia = $this->Multimedia->patchEntity($multimedia, $this->request->data);

            //upload script start here
            $mm_dir = new Folder(WWW_ROOT . 'upload_dir', true, 0755);
            $target_path = $mm_dir->pwd() . DS . $this->request->data('url.name');
            move_uploaded_file($this->request->data('url.tmp_name'), $target_path);

            //save the file name in the field 'url'
            $multimedia->url= $this->request->data('url.name');
            //the script ends here

            if ($this->Multimedia->save($multimedia)) {
                    // ............
            } else {
                    // .........
            }
    }
    // ..........
}

add.ctp //改进

代码语言:javascript
复制
<?= $this->Form->create($multimedia, ['type' => 'file']); ?>
echo $this->Form->input('url', ['type' => 'file']);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31149349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档