Я пытаюсь сохранить свои строки ниже 80 столбцов. Самая сильная причина состоит в том, что я часто использую grep
и less
просматривать свой код при работе в командной строке. Мне действительно не нравится, как терминалы повреждают длинные исходные строки (они, в конце концов, не сделаны для того задания). Другая причина состоит в том, что я нахожу, что выглядит лучше, если все вписывается в строку и не повреждается редактором. Например, имея параметры долгих вызовов функции, приятно выровненных друг ниже друга и подобного материала.
По умолчанию файлы загружаются в систему временный каталог, что означает:
move_uploaded_file
, чтобы переместить файлы в другое место, setDestination
, который можно использовать для этого. Для второго пункта есть пример в руководстве :
$element = new Zend_Form_Element_File('foo');
$element->setLabel('Upload an image:')
->setDestination('/var/www/upload')
->setValueDisabled(true);
(Но прочтите это страница: есть другая полезная информация)
Если бы вы переместили файл в общедоступный каталог, кто угодно мог бы отправить ссылку на этот файл кому-либо еще, и вы не можете контролировать, кто имеет доступ к файлу.
Вместо этого вы можете сохранить файл в БД как longblob, а затем использовать Zend Framework, чтобы предоставить пользователям доступ к файлу через контроллер / действие. Это позволит вам обернуть вашу собственную логику аутентификации и разрешений пользователей вокруг доступа к файлам.
Вам нужно будет получить файл из каталога / tmp, чтобы сохранить его в db:
// I think you get the file name and path like this:
$data = $form->getValues(); // this makes it so you don't have to call receive()
$fileName = $data->file->tmp_name; // includes path
$file = file_get_contents($fileName);
// now save it to the database. you can get the mime type and other
// data about the file from $data->file. Debug or dump $data to see
// what else is in there
Ваше действие в Контроллер для просмотра будет иметь вашу логику авторизации и затем загрузить строку из базы данных:
// is user allowed to continue?
if (!AuthenticationUtil::isAllowed()) {
$this->_redirect("/error");
}
// load from db
$fileRow = FileUtil::getFileFromDb($id); // don't know what your db implementation is
$this->view->fileName = $fileRow->name;
$this->view->fileNameSuffix = $fileRow->suffix;
$this->view->fileMimeType = $fileRow->mime_type;
$this->view->file = $fileRow->file;
Затем в представлении:
<?php
header("Content-Disposition: attachment; filename=".$this->fileName.".".$this->fileNameSuffix);
header('Content-type: ".$this->fileMimeType."');
echo $this->file;
?>