我在文件上传方面面临这个奇怪的问题。 所以当我上传文件时一切都很顺利。但是当我没有在上传中选择任何文件并提交表单时,我得到以下错误:
Notice (8): Array to string conversion [CORE\cake\libs\model\datasources\dbo_source.php, line 749]
Warning (512): SQL Error: 1054: Unknown column 'Array' in 'field list' [CORE\cake\libs\model\datasources\dbo_source.php, line 684]
Query: INSERT INTO `masters` (`candidate_id`, `candidate_name`, `candidate_file_name`) VALUES ('heman', 'He Man', Array)
现在我正在做的事情:在我的控制器中:
调用文件上传功能的功能:
if ( $_FILES['data']['name']['Master'])
{
$this->upload_files();
}
这是文件上传功能:
function upload_files() {
$fcnt = 0;
$vdata = $_FILES['data']['name']['Master'];
echo "Vdata:";
pr($vdata);
foreach ( $vdata as $v )
{
$pro_files[] = array(
'name'=>$_FILES['data']['name']['Master']['candidate_file_name'],
'tmp'=>$_FILES['data']['tmp_name']['Master']['candidate_file_name'],
'type'=>$_FILES['data']['type']['Master']['candidate_file_name'],
);
echo "Pro_files:";
pr($pro_files);
$fcnt++;
}
$cnt = 0;
$allowed = array(
'xls','xlsx','db','mbd',
'txt','pdf','doc','docx',
'log','rtf','wpd','wps',
'csv','dat','pps','ppt',
'pptx','sdf','xml','bmp',
'gif','jpg','png','psd',
'thm','tif','svg','sql',
'html','htm','js','php',
'bin','mim','7z','deb',
'gz','pkg','sit',
'sitx','tar.gz','zip',
'zipx','pdf'
);
foreach ( $pro_files as $file )
{
$fileType = $file['type'];
$fileType2 = explode('/',$fileType);
$fileName = $file['name'];
$path = 'C:\wamp\www' . '\\' . $fileName;
//if ( in_array($fileType2[1],$allowed))
//{
echo "fileName";
pr($fileName);
if ( move_uploaded_file($file["tmp"], $path) )
{
$this->data['Master']['candidate_file_name'] = $fileName;
}
//}
$cnt++;
}
}
以下是我的调试数据的样子:
Array
(
[Master] => Array
(
[candidate_id] => heman
[candidate_name] => He Man
[candidate_file_name] => Array
(
[name] => test.txt
[type] => text/plain
[tmp_name] => C:\wamp\tmp\php329D.tmp
[error] => 0
[size] => 0
)
)
)
以下是vdata的样子:
Array
(
[candidate_file_name] =>
)
这是配置文件的样子
Array
(
[0] => Array
(
[name] =>
[tmp] =>
[type] =>
)
)
文件名不算什么。
这是pr($ _ FILES)的样子:
Array
(
[data] => Array
(
[name] => Array
(
[Master] => Array
(
[candidate_file_name] =>
)
)
[type] => Array
(
[Master] => Array
(
[candidate_file_name] =>
)
)
[tmp_name] => Array
(
[Master] => Array
(
[candidate_file_name] =>
)
)
[error] => Array
(
[Master] => Array
(
[candidate_file_name] => 4
)
)
[size] => Array
(
[Master] => Array
(
[candidate_file_name] => 0
)
)
)
)
我无法弄清问题可能是什么。 有人可以帮忙吗? 非常感谢您的帮助。 谢谢,
答案 0 :(得分:0)
您正在将列的名称设置为表单文件名。但是因为表单字段将作为数组返回,所以数据库不知道如何处理它。这是您将文件保存到放置位置后需要执行的操作:
$this->request->data['Master']['candidate_file_name'] = '/path/to/where/you/saved/the/file.ext';
如果表单字段为空,那么您只需要执行以下操作:
unset($this->request->data['Master']['candidate_file_name']);
<强>更新强>
检查此问题的最佳方法是:
if (empty($this->request->data['Master']['candidate_file_name']['name'])) {
unset($this->request->data['Master']['candidate_file_name']);
}