上传到Web服务器的文件不包含实际的文件数据

时间:2014-07-04 03:04:25

标签: php cakephp file-upload http-post

我正在尝试创建一个接受文件上传的简单Cakephp 2.5.1应用程序。我正在使用http://milesj.me/code/cakephp/uploader中提供的文件上传器插件。我按照网站上的说明安装了它,似乎工作正常。

以下代码将添加到model.php中。有一栏专栏图片'在模型表中。

public $actsAs = array(
    'Uploader.Attachment' => array(
        // Do not copy all these settings, it's merely an example
        'picture' => array(
            'nameCallback' => '',
            'append' => '',
            'prepend' => '',
            'tempDir' => TMP,
            'uploadDir' => '',
            'transportDir' => '',
            'finalPath' => '',
            'dbColumn' => '',
            'metaColumns' => array(),
            'defaultPath' => '',
            'overwrite' => false,
            'stopSave' => true,
            'allowEmpty' => true,
            'transforms' => array(),
            'transformers' => array(),
            'transport' => array(),
            'transporters' => array(),
            'curl' => array()
        )
    )
);

在关联的ctp文件中,我有以下代码;

<?php
    echo $this->Form->create('Upload', array('type' => 'file'));
    echo $this->Form->input('picture', array('type' => 'file'));
    echo $this->Form->end('Submit');
?>

我设法将图像文件SSSS.jpg上传到网络服务器。然而,奇怪的是上传的图像文件是一个小文件,其中包含文本中的HTTP POST信息,而不是实际的图像数据。文件内容看起来像这样;

_method=POST&_method=POST&data%5BUpload%5D%5Bpicture%5D=SSSS.jpg

有人能告诉我哪些事情可能出错了吗?谢谢。

编辑:我刚在Chrome调试中发现,在HTTP POST方法下,发送的文件类型为text/html。这是一个问题吗?如果是,我如何将类型更改为image/jpg

1 个答案:

答案 0 :(得分:1)

更改以下行

echo $this->Form->input('picture', array('type' => 'file'));

使用以下语法

echo $this->Form->input('picture', array('type' => 'file/image'));

示例代码:

echo $form->labelTag('File/image', 'Image');
echo $html->file('File/image');