Ben Zend Framework 1.9.6 kullanıyorum. Ben hemen hemen sonuna dışında anladım var düşünüyorum. Bu ben bugüne kadar ne var:
Form:
<?php
class Default_Form_UploadFile extends Zend_Form
{
public function init()
{
$this->setAttrib('enctype', 'multipart/form-data');
$this->setMethod('post');
$description = new Zend_Form_Element_Text('description');
$description->setLabel('Description')
->setRequired(true)
->addValidator('NotEmpty');
$this->addElement($description);
$file = new Zend_Form_Element_File('file');
$file->setLabel('File to upload:')
->setRequired(true)
->addValidator('NotEmpty')
->addValidator('Count', false, 1);
$this->addElement($file);
$this->addElement('submit', 'submit', array(
'label' => 'Upload',
'ignore' => true
));
}
}
Controller:
public function uploadfileAction()
{
$form = new Default_Form_UploadFile();
$form->setAction($this->view->url());
$request = $this->getRequest();
if (!$request->isPost()) {
$this->view->form = $form;
return;
}
if (!$form->isValid($request->getPost())) {
$this->view->form = $form;
return;
}
try {
$form->file->receive();
//upload complete!
//...what now?
$location = $form->file->getFileName();
var_dump($form->file->getFileInfo());
} catch (Exception $exception) {
//error uploading file
$this->view->form = $form;
}
}
Şimdi dosya ile ne yapacağız? Varsayılan olarak benim /tmp
dizine tarih olmuştur. Onu nerede muhafaza edeceğinize Açıkçası bu değil. Benim uygulama kullanıcıları indirmek mümkün olmak istiyorum. Yani, ben bu yüzden ben bir url olarak görüntüleyebilirsiniz benim uygulama kamu dizinine yüklenen dosyayı taşımak ve veritabanı dosya adını saklamak gerekir demektir düşünüyorum.
(Daha önceki yapmaya çalışırken ben hataları içine koşuyordu olsa) ya da ilk etapta yükleme dizini olarak ayarlayabilirsiniz.
Eğer daha önce yüklenen dosyalar ile çalıştınız mı? Ben almalıdır sonraki adım nedir?
Solution:
(Benim uygulamanın tüm sürümleri için erişilebilir yapmak için benim uygulama dışında bir dizine bir sym bağlantı olduğu) data/uploads
içine yüklenen dosyaları koymaya karar verdim.
# /public/index.php
# Define path to uploads directory
defined('APPLICATION_UPLOADS_DIR')
|| define('APPLICATION_UPLOADS_DIR', realpath(dirname(__FILE__) . '/../data/uploads'));
# /application/forms/UploadFile.php
# Set the file destination on the element in the form
$file = new Zend_Form_Element_File('file');
$file->setDestination(APPLICATION_UPLOADS_DIR);
# /application/controllers/MyController.php
# After the form has been validated...
# Rename the file to something unique so it cannot be overwritten with a file of the same name
$originalFilename = pathinfo($form->file->getFileName());
$newFilename = 'file-' . uniqid() . '.' . $originalFilename['extension'];
$form->file->addFilter('Rename', $newFilename);
try {
$form->file->receive();
//upload complete!
# Save a display filename (the original) and the actual filename, so it can be retrieved later
$file = new Default_Model_File();
$file->setDisplayFilename($originalFilename['basename'])
->setActualFilename($newFilename)
->setMimeType($form->file->getMimeType())
->setDescription($form->description->getValue());
$file->save();
} catch (Exception $e) {
//error
}