奇怪的标题,是的,但问题很简单;只是加重。我有一个没有使用 Zend_Form 构建的表单,它有两个文件上传:
<input name="image" type="file" />
<input name="file" type="file" />
这是处理上传的控制器中的代码块。实际上还有一点,但这是相关的部分:
$data['image'] = (isset($_FILES["image"]) && $_FILES["image"]["name"] ? $_FILES["image"]["name"] : NULL);
$data['file'] = (isset($_FILES["file"]) && $_FILES["file"]["name"] ? $_FILES["file"]["name"] : NULL);
$options = array('ignoreNoFile' => TRUE);
$upload = new Zend_File_Transfer();
$upload->setOptions($options)
->addFilter('Rename', array('target' => RESOURCES_IMG . $data['image'], 'overwrite' => TRUE), 'image')
->addFilter('Rename', array('target' => RESOURCES_FILES . $data['file'], 'overwrite' => TRUE), 'file')
->addValidator('ImageSize', false, array('minwidth' => 100,
'maxwidth' => 100,
'minheight' => 100,
'maxheight' => 100), 'image')
->addValidator('Extension', false, 'jpg', 'image');
if (!$upload->isValid())
{
echo '<h1>Oops</h1><p>Please correct the following errors: <hr /></p>';
foreach ($upload->getMessages() as $key => $val)
{
echo '<p><strong>' . $key . '</strong><br />' . $val . '</p>';
}
die;
}
else
{
$upload->receive();
} // if (!$upload->isValid())
这很简单。$data 的东西只是我抓取文件名(如果它在那里)或将变量设置为 NULL。我将我的 addFilter() 和 addValidator() 分段,在这种情况下只影响它们的相关文件“图像”或“文件” - 表单字段的名称。
“文件”上传始终有效!但是,“图像”上传不会,而且它会将临时文件放入 RESOURCES_FILES 目录中,这根本没有意义。因此,该目录除了 php8TJT13、phpXmOzQM 等文件之外还有 PDF 和其他任何内容。
我一直在盯着这段代码,搜索 Stack Overflow 和任何谷歌会出现的东西,我找不到任何有这个问题的人。帮助!