一个基本的Symfony 3应用程序安装并配置了VichUploader bundle,并带有一个用于上传文件的实体。
如何在我的ORM数据夹具中将文件附加到此实体?
有一个question for this problem in Symfony 2,我尝试过该代码。夹具加载时没有错误,但“上传”文件未复制到其最终目的地。
我可以手动执行此操作,我的最新尝试如下:
config.yml
我的解决方案仍需要大量工作!我吠叫错了树吗?
$m = new MongoClient();
$db = $m->yourDB;
$collection = $db->yourCollecton;
$sdate = '2016-01-01';
$sdate = '2016-01-31';
$pipeline = array(
array(
'$match'=>array('date'=>array('$gte'=>$sdate,'$lte'=>$edate))
),
array(
'$group' => array(
'_id' => array(null),
'first_field' => array('$field'),
)
)
);
$cursor = $collection->aggregate($pipeline);
$row = $cursor['result'][0];
中定义。我应该从那里访问它们或将它们转换为参数答案 0 :(得分:0)
我发现GitHub上的VichUploader文档不是很好,所以我建议你使用Symfony文档: http://symfony.com/doc/current/controller/upload_file.html
我在src / AppBundle下创建了一个FileUploader.php,如下所示:
<?php
// src/AppBundle/FileUploader.php
namespace AppBundle;
use Symfony\Component\HttpFoundation\File\UploadedFile;
class FileUploader
{
private $targetDir;
public function __construct($targetDir)
{
$this->targetDir = $targetDir;
}
public function upload(UploadedFile $file, $path, $name)
{
$fileName = $name.'.'.$file->guessExtension();
$file->move($this->targetDir.$path, $fileName);
return $fileName;
}
}
这允许您指定文件,路径和名称。
然后在你的app / config / service.yml文件中添加它以引用它:
services:
app.attachment_uploader:
class: AppBundle\FileUploader
arguments: ['%document_directory%']
然后你需要在app / config / parameters.yml文件中指定%document_directory%:
parameters:
...
document_directory: documents
在我的情况下,上述&#39;文件&#39;文件夹位于Web文件夹下,因此路径为“web / documents&#39;”。我想把所有东西存放在同一个地方。
然后我在任何控制器中使用FileUploader,如下所示:
...
->add('catalog', FileType::class, array( // Docs
'label' => 'Catalog Course Description ',
'required' => false,
'attr' => array(
'accept' => 'image/*,application/pdf,text/plain,application/msword',
'onchange' => "checkFileSize('form_catalog')"
),
))
...
$file = $form->get("catalog")->getData();
$fileName = $this->get('app.attachment_uploader')->upload( $file,
'/'.$pet->getStudent()->getBanId(),
$pet->getCourse()->getCorTitle().'_'.'Catalog_Course_Desc'
...
$att_cat->setDocument($fileName);
$em->persist($att_cat);
$em->flush();
在上面的代码中,我得到了&#34;目录&#34;文件按钮数据,即文件。然后拨打&#39;上传&#39;指定文件和路径以及文件名参数的方法。然后保持实体($ att_cat)。
以上使用非常简单。