gpt4 book ai didi

angularjs - 如何使用 angular + symfony + vichuploaderBundle 上传图片

转载 作者:行者123 更新时间:2023-12-03 18:03:29 27 4
gpt4 key购买 nike

我正在尝试使用 angular 和 vichUploaderBundle 为 symfony 上传图像。

思路如下,

我有一些标签,如果你点击它们,它们会显示不同的表格,其中之一是用于文件上传。
我的问题是,如何上传图片?我的意思是正确的方法。
我有一个 html.twig 文件,里面有一个表单(我使用的是 twig 引擎的包含)。
假设我有这个 form.html.twig

 <form onsubmit="{{ path('upload-new-file') }}">
<input type="file" id="someFile"/>
<button> Upload Image </button>
</form>

选择图像后,单击上传,这将确定哪个 URL 与上传新文件(routing.yml)匹配(例如,它将执行一些查询以上传文件)

我的主要问题是我很困惑,因为我一直在用 php 编写表单(使用 createForm、form->isvalid 等),然后用 twig 渲染它们,我也在使用 vichUploaderBundle。
在我所描述的情况下,我无法做到这一点,因为我没有“形式”来呈现它。 ({{form(form)}})。
我没有以通常的方式将表单作为参数传递(就像在 symfony 文档中一样;$this->render('someTemplate.html.twig',array ('form' => $form)))

想象一下,我们有一个带有选项卡的网页,如果您单击其中一个选项卡,它将显示一些表单,其中一个表单包含上传输入,您选择一个图像并单击上传,然后呢?回想一下,我使用 angularjs、vichuploaderbundle、symfony 和 Doctrine 作为 ORM。

提前致谢!

最佳答案

Twig 文件

{{ form_start(form, {'attr': {'novalidate': 'novalidate'} }) }}
<div class="form-group">
<label>{{"news.lbl.file"|trans}}</label>
{{form_widget(form.file)}}
<lable>{{form_errors(form.file)}}</lable>
</div>
<div class="form-group">
{{form_widget(form.submit)}}
</div>
{{ form_end(form)}}

类上传者
<?php

namespace BaseBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\HttpFoundation\File\UploadedFile;

abstract class Uploader
{

/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;

/**
* @var string
*
* @ORM\Column(name="path", type="string", length=500,nullable=true)
*/
protected $path;

/**
* Set imageUrl
*
* @param string $path
* @return Category1
*/
public function setPath($path)
{
$this->path = $path;

return $this;
}

/**
* Get path
*
* @return string
*/
public function getPath()
{
return $this->path;
}

/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}

public function getAbsolutePath()
{
return null === $this->path ? null : $this->getUploadRootDir() . '/' . $this->path;
}

public function getWebPath()
{
return null === $this->path ? null : $this->getUploadDir() . '/' . $this->path;
}

protected function getUploadRootDir($docroot="web")
{
// the absolute directory path where uploaded
// documents should be saved
return __DIR__ . "/../../../../$docroot/" . $this->getUploadDir();
}

protected abstract function getUploadDir();

/**
* @Assert\File(maxSize="6000000")
*/
protected $file;

/**
* Sets file.
*
* @param UploadedFile $file
*/
public function setFile(UploadedFile $file = null)
{
$this->file = $file;
}

/**
* Get file.
*
* @return UploadedFile
*/
public function getFile()
{
return $this->file;
}

public function upload()
{
// the file property can be empty if the field is not required
if (null === $this->getFile())
{
return;
}
// use the original file name here but you should
// sanitize it at least to avoid any security issues
// move takes the target directory and then the
// target filename to move to
$name = $this->getUploadDir() . "/" . time() . "-" . $this->getFile()->getClientOriginalName();
$this->getFile()->move(
$this->getUploadRootDir(), $name
);
// set the path property to the filename where you've saved the file
$this->path = $name;
// clean up the file property as you won't need it anymore
$this->file = null;
}

}

实体类
class entity extends Uploder
{

protected function getUploadDir()
{
return 'dirctory name';
}
}

并添加归档路径然后删除路径

关于angularjs - 如何使用 angular + symfony + vichuploaderBundle 上传图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29083255/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com