【发布时间】:2014-07-04 03:04:25
【问题描述】:
我正在尝试创建一个接受文件上传的简单 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?
【问题讨论】:
-
您在发送文件的 html 中使用了多部分类型?
-
我不确定。在 Cakephp 中,视图助手在后台做事。让我先检查一下。
-
还要验证该字段的名称是否与您 cakephp 上的上传处理程序上的名称相同。
-
下面的表单代码确实包含
enctype="multipart/form-data"<form action="/project-cp251/uploads/add" id="UploadAddForm" enctype="multipart/form-data" method="post" accept-charset="utf-8"><div style="display:none;"><input type="hidden" name="_method" value="POST"/></div><div class="input file"><label for="UploadPicture">Picture</label><input type="file" name="data[Upload][picture]" id="UploadPicture"/></div><div class="submit"><input type="submit" value="Submit"/></div></form> -
@eddwinpaz:问题可能是由于 HTTP Post 中发送的文件类型是
text/html而不是image/jpg而引起的吗?
标签: php cakephp file-upload http-post