//excerpt
$file = new Zend_Form_Element_File('file');
$file->setLabel('File to upload:')
->setRequired(true)
->addValidator('NotEmpty')
->addValidator('Count', false, 1)
->setDestination(APPLICATION_UPLOADS_DIR);
$this->addElement($file);
Run Code Online (Sandbox Code Playgroud)
//excerpt
if ($form->isValid($request->getPost()) {
$newFilename = 'foobar.txt';
//how should I rename the file?
//When should I rename the file? Before or after receiving?
try {
$form->file->receive();
echo 'filename: '. $form->file->getFileName();
}
}
Run Code Online (Sandbox Code Playgroud)
当我调用$form->file->getFileName()
它时,返回完整路径,而不仅仅是文件名.如何仅输出文件名?
//Answer: First, get an array of the parts of the filename:
$pathparts = pathinfo($form->file->getFileName());
//then get the part that you want to use
$originalFilename = $pathparts['basename'];
Run Code Online (Sandbox Code Playgroud)如何将文件名重命名为我想要的名称?这可以 …
我正在使用Zend Framework 1.9.6.我想除了最后我已经弄明白了.这是我到目前为止:
<?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
));
}
}
Run Code Online (Sandbox Code Playgroud)
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 …
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个"上传文件,并以附件形式发送电子邮件"表单,在发送电子邮件之前,文件在选择后开始上传(如Gmail).我还想实现一个进度条来显示上传的状态.
应该有各种各样的例子,但我找不到它们!
您是否知道任何示例,教程,插件,帮助程序,或者您自己完成了这些并且想要共享一些代码示例?
谢谢!
我在我的表单中设置了上传最大文件大小:
$file = new Zend_Form_Element_File('file');
$file->setLabel('File to upload:')
->setRequired(true)
->addValidator('NotEmpty')
->addValidator('Count', false, 1)
->addValidator('Size', false, 10485760) //10MB = 10,485,760 bytes
->setMaxFileSize(10485760)
->setDestination(APPLICATION_UPLOADS_DIR);
$this->addElement($file);
Run Code Online (Sandbox Code Playgroud)
但我在Zend Framework应用程序中收到此错误消息:
Notice: Your 'upload_max_filesize' config setting limits the maximum filesize to '2097152'. You tried to set '10485760' in /location/to/Zend/Form/Element/File.php on line 620
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我有问题,以下Zend表格抛出错误.问题是"文件" - 元素和使用setElementDecorators.
class Products_AddForm extends Zend_Form
{
function init() {
// other form elements...
$uploadElement = new Zend_Form_Element_File('Excel');
$uploadElement->setLabel('Excel');
$this->addElement($uploadElement);
$this->setElementDecorators(array(
'ViewHelper',
'Errors',
array(array('data' => 'HtmlTag'), array('tag' => 'td')),
array('Label', array('tag' => 'th')),
array(array('row' => 'HtmlTag'), array('tag' => 'tr'))
));
}
}
Run Code Online (Sandbox Code Playgroud)
这会引发错误.
(Warning: Exception caught by form: No file decorator found... unable to render file element Stack Trace: #0 )
Run Code Online (Sandbox Code Playgroud)
$uploadElement->addDecorator('File');
在最后添加SetElementDecorators
将工作,但这将给我文件元素两次!
请帮忙吗?
TIA Matt
即使我选择2个或更多图像,也只会上传一个.
我有一个简单的形式:
<form action="/images/thumbs" method="post" enctype="multipart/form-data">
<input name="file[]" id="file" type="file" multiple="" />
<input type="submit" name="upload_images" value="Upload Images">
</form>
Run Code Online (Sandbox Code Playgroud)
然后在我的控制器中:
public function thumbsAction()
{
$request = $this->getRequest();
if ($request->isPost()) {
if (isset($_POST['upload_images'])) {
$names = $_FILES['file']['name'];
// the names will be an array of names
foreach($names as $name){
$path = APPLICATION_PATH.'/../public/img/'.$name;
echo $path; // will return all the paths of all the images that i selected
$uploaded = Application_Model_Functions::upload($path);
echo $uploaded; // will return true as many times as i select …
Run Code Online (Sandbox Code Playgroud) 今天我更新到ZF 2.4使用浮动验证器但不幸的是我意识到我的文件上传表单字段给出了意外的错误消息.
这是我的表单对象
$this->add([
'name' => 'profileimage',
'type' => '\Zend\Form\Element\File',
'attributes' => [
'id' => 'profileimage',
'class' => 'styled',
],
]
);
Run Code Online (Sandbox Code Playgroud)
这是我的验证器
$inputFilter->add([
'name' => 'profileimage',
'required' => false,
'allow_empty' => true,
'priority' => 300,
'filters' => [
['name' => 'StripTags'],
['name' => 'StringTrim'],
],
'validators' => [
[
'name' => '\Zend\Validator\File\IsImage',
],
[
'name' => '\Zend\Validator\File\UploadFile',
],
[
'name' => '\Zend\Validator\File\ImageSize',
'options' => [
'minWidth' => 300,
'minHeight' => 300,
]
],
[
'name' => '\Zend\Validator\File\Size',
'options' => …
Run Code Online (Sandbox Code Playgroud) zend-framework zend-form zend-validate zend-file zend-framework2
我有一个关于在Zend上传文件后重命名文件的问题.我不知道在哪里放置重命名过滤器.这就是我所拥有的.我试过搬东西,但我迷路了.目前它确实将文件上传到我的照片文件夹,但它没有重命名.谢谢你的帮助!
if($this->_request->isPost())
{
$formData = $this->_request->getPost();
if ($form->isValid($formData))
{
$adapter = new Zend_File_Transfer_Adapter_Http();
$adapter->setDestination(WWW_ROOT . '/photos');
$photo = $adapter->getFileInfo('Photo');
$adapter->addFilter('Rename', array(
$photo['Photo']['tmp_name'],
WWW_ROOT . '/photos/' . $this->memberId . '.jpg',
true
));
if ($adapter->receive())
{
echo 'renamed';
}
}
}
Run Code Online (Sandbox Code Playgroud) 我目前正在使用Zend Framework并有一个上传文件表单.经过身份验证的用户可以上载文件,该文件将存储在应用程序的目录中,以及存储在数据库中的位置.这样它就可以显示为可以下载的文件.
<a href="/upload-location/filename.pdf">Download</a>
Run Code Online (Sandbox Code Playgroud)
但我注意到的是,具有相同名称的文件将覆盖uploads目录中的文件.没有错误消息,文件名也没有增加.所以我认为该文件必须被覆盖(或永远不会上传).
在上传,移动或存储这些文件时,我应该注意哪些最佳做法?我应该始终重命名文件,以便文件名始终是唯一的吗?
我有一个zend表单,允许用户填写对象的属性.例如,音乐艺术家.窗体有关于艺术家,像姓名,电话号码,地址,并没有什么基本信息,但它也有一个文件上传域.如果用户上传文件,其存储在数据库(本质上是一个行)对象的这种情况下,如果用户曾经想要编辑这种特定情况下,形式重新填充与对象的信息.但是,表单不会重新填充文件上载信息,因为它不会重新上载它.
如何向用户发出已经上传文件的信号,指出它是哪个文件,甚至可能链接到该文件?类似于填充表单元素的东西是首选.理想情况下,我希望能够为用户提供上传以前上传的文件的功能,因此文件上传元素应该保留.任何的想法?非常感谢阅读.
干杯,Joe Chin
我有一个表单,有两个文件上传元素.它像是
$data_file_one = $this->createElement('file','data_file_one');
$data_file_one->setRequired(true)
->addValidator('Extension', false, 'csv')
->setDestination($filepath);
Run Code Online (Sandbox Code Playgroud)
两者都设置为必需true.我使用相同的表单来发布新帖子和编辑帖子.当它用于编辑时,文件上传不应该是强制性的,必须设置为必需的false.所以,我需要改变
setRequired(true)to setRequired(false)
如果调用编辑操作来加载表单并更改此元素选项,我该怎么办?
提前致谢.
zend-file ×11
zend-framework ×11
file-upload ×5
php ×5
zend-form ×4
ajax ×1
jquery ×1
upload ×1