Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melaksanakan muat naik fail dalam rangka kerja Zend

Bagaimana untuk melaksanakan muat naik fail dalam rangka kerja Zend

王林
王林asal
2023-07-29 21:43:47723semak imbas

Cara melaksanakan muat naik fail dalam rangka kerja Zend

Memuat naik fail ialah salah satu fungsi biasa dalam aplikasi web. Dalam rangka kerja Zend, fungsi muat naik fail boleh dilaksanakan dengan mudah dengan menggunakan ZendForm dan ZendInputFilter. Artikel ini akan memperkenalkan cara untuk melaksanakan muat naik fail dalam rangka kerja Zend dan memberikan contoh kod yang sepadan.

Pertama, kita perlu membuat borang untuk memuat naik fail. Kelas borang tersuai boleh dibuat dengan mewarisi ZendForm. Dalam borang, kita perlu menambah elemen bentuk fail jenis dan menetapkan atribut nama elemen borang supaya fail yang dimuat naik boleh diperolehi dalam pengawal kemudian.

use ZendFormElement;
use ZendFormForm;

class UploadForm extends Form
{
    public function __construct($name = null)
    {
        parent::__construct($name);

        // 添加文件上传元素
        $file = new ElementFile('file');
        $file->setLabel('选择文件')
             ->setAttribute('id', 'file-upload');
             
        $this->add($file);
        
        // 添加提交按钮
        $submit = new ElementSubmit('submit');
        $submit->setValue('上传');
        
        $this->add($submit);
    }
}

Seterusnya, kita perlu mengendalikan muat naik fail dalam pengawal. Kami boleh mengesahkan dan menapis fail yang dimuat naik melalui ZendInputFilter. Pertama, anda perlu membuat instantiate ZendInputFilterInputFilter dan menambah penapisan input jenis fail. Kemudian, fail yang dimuat naik boleh disahkan melalui ZendValidatorFile, seperti saiz fail, jenis fail, dsb. Akhir sekali, kita perlu menyimpan fail ke direktori yang ditentukan dalam pengawal.

use ZendMvcControllerAbstractActionController;
use ZendViewModelViewModel;
use ZendInputFilterInputFilter;
use ZendValidatorFileSize;
use ZendValidatorFileMimeType;

class UploadController extends AbstractActionController
{
    public function indexAction()
    {
        // 创建文件上传表单
        $form = new UploadForm();
        
        $request = $this->getRequest();

        if ($request->isPost()) {
            // 实例化输入过滤器
            $inputFilter = new InputFilter();
            
            // 添加文件类型的输入过滤
            $fileInput = new InputFilterFileInput('file');
            $fileInput->setRequired(true);
            $fileInput->getValidatorChain()
                      ->attach(new Size(['max' => '2MB']))
                      ->attach(new MimeType(['image/jpeg', 'image/png']));
            
            $inputFilter->add($fileInput);
            
            // 将过滤后的数据绑定到表单
            $form->setInputFilter($inputFilter);
            $form->setData($request->getPost());
            
            // 检查表单数据是否有效
            if ($form->isValid()) {
                // 获取上传的文件
                $file = $form->get('file')->getValue();

                // 保存文件到指定目录
                $destination = '/path/to/save/uploaded/files/' . $file['name'];
                move_uploaded_file($file['tmp_name'], $destination);
                
                // 重定向到成功页面
                return $this->redirect()->toRoute('upload', ['action' => 'success']);
            }
        }

        return new ViewModel([
            'form' => $form
        ]);
    }
}

Akhir sekali, paparkan borang dalam paparan dan kendalikan hasil muat naik fail. Teg ZendFormViewHelperForm boleh digunakan dalam paparan untuk menjana kod HTML borang.

<h2>文件上传</h2>

<?= $this->form()->openTag($form) ?>
    <?= $this->formRow($form->get('file')) ?>
    <?= $this->formSubmit($form->get('submit')) ?>
<?= $this->form()->closeTag() ?>

Melalui langkah di atas, kita boleh melaksanakan fungsi muat naik fail dalam rangka kerja Zend. Dengan menggunakan ZendForm dan ZendInputFilter, kami boleh mengesahkan dan menapis fail yang dimuat naik dengan mudah dan menyimpan fail ke direktori yang ditentukan. Contoh kod dalam pengawal dan pandangan boleh membantu anda memahami dan melaksanakan fungsi muat naik fail dengan lebih baik. Saya doakan anda berjaya membangun dengan Zend Framework!

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan muat naik fail dalam rangka kerja Zend. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn