gpt4 book ai didi

php - Zend framework file upload 非法上传

转载 作者:可可西里 更新时间:2023-11-01 01:09:26 25 4
gpt4 key购买 nike

我正在尝试使用其他文本字段在普通表单中上传文件。

到目前为止,文件已上传到临时文件夹,但没有上传到我的目标文件夹,我总是收到此错误“文件‘上传’被非法上传。这可能是一次可能的攻击”。

我已经检查了临时文件的文件名,并且在正确的文件夹中有正确的 url。

我在这里错过了什么。

        $form = new Zend_Form();
$form->setAttrib('enctype', 'multipart/form-data');
$form->setMethod('post')

->addElement('file', 'pdf', array(
'size' => '40',
'label' => 'Select File',
'required' => true,
'validators' => array(
'Size' => array('min' => 20, 'max' => 1000000)
)
)
)

->addElement('submit', 'Save')
;

if ( $this->getRequest()->isPost() ) {
if ( $form->isValid($this->getRequest()->getParams()) ) {
$id = $form->getValue('name');

$upload = new Zend_File_Transfer_Adapter_Http();
$uploadDestination = APPLICATION_PATH . '/../public/uploads/'.$id;

if(!is_dir($uploadDestination)){
mkdir($uploadDestination, 0777, true);
}

$upload->setDestination($uploadDestination);
echo $upload->getFileName();

if($upload->receive('pdf'))
{
echo '<pre>';
print_r($form->getValues());
die();
}
else
{
$messages = $upload->getMessages();
echo implode("\n", $messages);
die();
}

$上传->接收('pdf');是什么不能正常工作。

最佳答案

自从提出这个问题后,认为 Zend Framework 中的事情可能有所改进。

下面的代码显示了一个强大的文件验证的工作示例,包括自定义的错误消息。

关键是 Zend_Form::isValid() 方法就是您所需要的,您不需要单独验证文件传输

您的表单定义,请注意文件验证器被添加就好像它们是普通验证器一样

class Jogs_Form_ImportForm extends Zend_Form
{
public function init()
{
$this->setAttrib('enctype', 'multipart/form-data');
$this->setAttrib( 'id', 'form-import' );

$importAction = $this->addElement('radio', 'importAction', array(
'multiOptions' => array(
'components' => 'Import components',
'layouts' => 'Import layouts',
'layoutComponents' => 'Import layout components',
),
'required' => true,
'label' => 'Import Type:',
));

$upload = $this->addElement( 'file', 'import-file', array(
'label' => 'Text (tab delimited) file (.txt)',
'validators' => array(
'Size' => array('max' => 10*1024*1024),
'Extension' => array('txt', 'messages' => array(
Zend_Validate_File_Extension::FALSE_EXTENSION
=> 'file must end with ".txt"' ) ),
'MimeType' => array( 'text/plain', 'messages' => array(
Zend_Validate_File_MimeType::FALSE_TYPE
=> 'file must be text (tab delimited)' ) ),
)
) );

$go = $this->addElement('submit', 'go', array(
'required' => false,
'ignore' => true,
'label' => 'Go',
));
}
}

你的 Controller 类

class ImportController extends Zend_Controller_Action
{
public function indexAction(){
$form = new Polypipe_Form_ImportForm();
$this->view->form = $form;

if (
$this->getRequest()->isPost()
&&
$form->isValid( $this->getRequest()->getPost() )
){
$data = $form->getValues();
// get the file info
$ft = $form->getElement('import-file')->getTransferAdapter();
$fileInfo = $ft->getFileinfo();
}

}

}

关于php - Zend framework file upload 非法上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4534301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com