Image cakephp 2.1如何以简单的形式上传图像并查看它

Image cakephp 2.1如何以简单的形式上传图像并查看它,image,cakephp,upload,Image,Cakephp,Upload,如此简单的事情竟如此困难,真是太疯狂了 请致电所有cakephp 2.1大师。我有一个表单,它有一个名称和文本图像(var)字段 我想简单地发布一个图像,没有大小调整,没有缩略图,没有什么特别的,只是一个简单的mvc示例,发布一个图像并在view.ctp中查看它 就这样。我已经在cakephp.org上阅读了/en/2.1的书和api,但我似乎无法让mvc工作,因为我看到它上传到一个文件夹中,并在ctp中查看它 我的控制器 public function add() { if ($thi

如此简单的事情竟如此困难,真是太疯狂了

请致电所有cakephp 2.1大师。我有一个表单,它有一个名称和文本图像(var)字段

我想简单地发布一个图像,没有大小调整,没有缩略图,没有什么特别的,只是一个简单的mvc示例,发布一个图像并在view.ctp中查看它

就这样。我已经在cakephp.org上阅读了/en/2.1的书和api,但我似乎无法让mvc工作,因为我看到它上传到一个文件夹中,并在ctp中查看它

我的控制器

public function add() {
    if ($this->request->is('post')) {
        $this->ListShExPainImage->create();
        if ($this->ListShExPainImage->save($this->request->data)) {
            $this->Session->setFlash(__('The list sh ex pain image has been saved'));
            $this->redirect(array('action' => 'index'));
        } else {
            $this->Session->setFlash(__('The list sh ex pain image could not be saved. Please, try again.'));
        }
    }
}

public function view($id = null) {
    $this->ListShExPainImage->id = $id;
    if (!$this->ListShExPainImage->exists()) {
        throw new NotFoundException(__('Invalid list sh ex pain image'));
    }
    $this->set('listShExPainImage', $this->ListShExPainImage->read(null, $id));
}
我的add.ctp

<?php echo $this->Form->create('ListShExPainImage');?>
<fieldset>
    <legend><?php echo __('Add List Sh Ex Pain Image'); ?></legend>
<?php
    echo $this->Form->input('name');
    echo $this->Form->input('image', array('type' => 'file'));
?>
</fieldset>
<?php echo $this->Form->end(__('Submit'));?>

我的观点.ctp

<h2><?php  echo __('List Sh Ex Pain Image');?></h2>
<dl>
    <dt><?php echo __('Id'); ?></dt>
    <dd>
        <?php echo h($listShExPainImage['ListShExPainImage']['id']); ?>
        &nbsp;
    </dd>
    <dt><?php echo __('Name'); ?></dt>
    <dd>
        <?php echo h($listShExPainImage['ListShExPainImage']['name']); ?>
        &nbsp;
    </dd>
    <dt><?php echo __('Image'); ?></dt>
    <dd>
        <?php echo h($listShExPainImage['ListShExPainImage']['image']); ?>
        &nbsp;
    </dd>
</dl>


非常感谢您的帮助,提前感谢您。

在您的控制器中,您对文件上载没有任何操作。尽管蛋糕有时很神奇,但自动猜出你想要上传什么并不是其中之一

如中所述,文件上载字段返回一个包含多个键的数据数组。您应该使用
名称
键并将其保存为
图像
字段(因为您似乎正在调用该字段)。例如:

$filename = $this->request->data['ListShExPainImage']['image']['name'];

// Move the image
move_uploaded_file(
    $this->request->data['ListShExPainImage']['image']['tmp_name'],
    '/path/to/your/image/dir/' . basename($filename)'
);

// Set the filename in the database
$this->request->data['ListShExPainImage']['image'] = $filename;
此外,您需要将所谓的
multipart/formdata
enctype设置到表单中,以便能够通过将文件类型添加到


另外,不要忘了将文件从临时文件夹移动到最终位置。

在控制器中,文件上载不会执行任何操作。尽管蛋糕有时很神奇,但自动猜出你想要上传什么并不是其中之一

如中所述,文件上载字段返回一个包含多个键的数据数组。您应该使用
名称
键并将其保存为
图像
字段(因为您似乎正在调用该字段)。例如:

$filename = $this->request->data['ListShExPainImage']['image']['name'];

// Move the image
move_uploaded_file(
    $this->request->data['ListShExPainImage']['image']['tmp_name'],
    '/path/to/your/image/dir/' . basename($filename)'
);

// Set the filename in the database
$this->request->data['ListShExPainImage']['image'] = $filename;
此外,您需要将所谓的
multipart/formdata
enctype设置到表单中,以便能够通过将文件类型添加到


此外,不要忘记将文件从临时文件夹移动到最终位置。

您还需要在表单中添加“类型”:

<?php echo $this->Form->create('ListShExPainImage', array('type' => 'file'));?>
然后执行创建和保存例程

在您看来,您可以这样做来显示图像:

<?php echo $this->Html->image('/path/to/your/image/dir/' . $listShExPainImage['ListShExPainImage']['image']); ?>

您还需要在表单中添加“类型”:

<?php echo $this->Form->create('ListShExPainImage', array('type' => 'file'));?>
然后执行创建和保存例程

在您看来,您可以这样做来显示图像:

<?php echo $this->Html->image('/path/to/your/image/dir/' . $listShExPainImage['ListShExPainImage']['image']); ?>


非常感谢您的帮助。我复制并粘贴了一些图像来测试视图。我这样做是为了测试视图是否按照下面给出的答案所建议的那样工作。我已经尝试了这两种答案,它只是不想物理上传到文件夹中的图像。我在我的webroot中创建了一个文件夹img_list_sh_ex。我错过了什么。我在wamp/Windows7中工作。任何线索。可能是文件夹上的预告吗?作为一个虚拟服务器,我不认为这是事实?非常感谢你的帮助。我复制并粘贴了一些图像来测试视图。我这样做是为了测试视图是否按照下面给出的答案所建议的那样工作。我已经尝试了这两种答案,它只是不想物理上传到文件夹中的图像。我在我的webroot中创建了一个文件夹img_list_sh_ex。我错过了什么。我在wamp/Windows7中工作。任何线索。可能是文件夹上的预告吗?作为一个虚拟服务器,我不认为这是事实?非常感谢你的帮助。这两篇文章都很有帮助,向我展示了所有必须做的事情。Your view.ctp非常有用。正如我在上面的帖子中所评论的那样。我只是无法将图像上载到文件夹。为了测试view.ctp,我将一些图片复制并粘贴到我的webroot中的img_list_sh_ex文件夹中,但由于某些原因,它没有上传图片。Cake也不会返回任何错误。可能是许可吗?我正在使用wamp/windows 7。很可能它与权限相关,但很抱歉,我无法在windows上提供太多帮助。非常感谢您的帮助。这两篇文章都很有帮助,向我展示了所有必须做的事情。Your view.ctp非常有用。正如我在上面的帖子中所评论的那样。我只是无法将图像上载到文件夹。为了测试view.ctp,我将一些图片复制并粘贴到我的webroot中的img_list_sh_ex文件夹中,但由于某些原因,它没有上传图片。Cake也不会返回任何错误。可能是许可吗?我正在使用wamp/windows 7。很可能它与权限相关,但很抱歉,我在windows上帮不了多少忙。