Tham gia diễn đàn khá lâu nhưng mình chưa đóng góp bài viết nào. Hôm nay, nhân ngày đẹp trời, mình sẽ làm bài Tut hướng dẫn upload file sử dụng Zend File. Nếu có gì chưa hợp lý hoặc thiếu sót, mong mọi người góp ý nhé.
Cấu trúc của folder trong bài Tut này như sau:
zffile
|__application
| |__ configs
| |__ controllers
| | |__ IndexController.php
| |__ forms
| | |__ UploadFile
| | | |__ UploadFile.php
| | |__ File.php
| |__ models
| |__ views
| |__bootstrap.php
|__ library
|__ public
| |__ file
|__ .htaccess
|__ index.php
Tạo form để upload file /zffile/forms/File.php:
Tạo thư mục /zffile/public/file để chứa file upload.PHP Code:<?phpclass Form_File extends Zend_Form{
public function init(){
$this->setAction('')->setMethod('post');
$this->setAttrib('enctype','multipart/form-data');
$file = $this->createElement('file','file',array(
'label' => 'Choose a file',
));
$submit = $this->createElement('submit','Upload');
$this->addElement($file)
->addElement($submit);
}
}
Tạo lớp upload file /zffile/forms/UploadFile/UploadFile.php:
Trong Controller Index:PHP Code:<?phpclass Form_UploadFile_UploadFile{
public $_upload;
public function __construct(){
$this->_upload = new Zend_File_Transfer;
$this->_upload->setDestination(APPLICATION_PATH.'/../public/file/');
}
}
Truy cập localhost/zffile/ , chọn file upload và test kết quả.PHP Code:<?php
class IndexController extends Zend_Controller_Action{
public function indexAction(){
$form = new Form_File;
if($this->_request->isPost()){
$upload = new Form_UploadFile_UploadFile;
$files = $upload->_upload->getFileInfo();
foreach($files as $file=>$info){
if(!$upload->_upload->isUploaded($file)){
echo "Chua chon file";
}
}
$upload->_upload->receive();
}
$this->view->form = $form;
}
Trường hợp, nếu muốn hạn chế các file upload như hạn chế dung lượng của file được up chẳng hạn, ta có thể làm như sau:
Trong file /zffile/forms/UploadFile/UploadFile.php, ta viết thêm một hàm setValidator, để kiểm tra dung lượng file khi upload:
Trong file IndexController, ta thêm hàm isValid vào foreach để kiểm tra:PHP Code:public function setValidator(){$this->_upload->addValidator(‘Size’,false,’40000’) //chỉ cho phép file có dung lượng
//nhỏ hơn 40 KB}
Bạn có thể tham khảo thêm về các validator khác ở http://framework.zend.com/manual/1.1...alidators.htmlPHP Code:if(!$upload->_upload->isValid($file)){
echo "File khong hop le";
}
Chúc các bạn thành công! ^^
Thứ Sáu, 1 tháng 6, 2012
Zend Framework: Upload file sử dụng Zend_File
Đăng ký:
Đăng Nhận xét (Atom)
Không có nhận xét nào:
Đăng nhận xét