gpt4 book ai didi

php - 通过 URL 输入设置 Symfony 上传的文件

转载 作者:行者123 更新时间:2023-12-03 03:25:51 24 4
gpt4 key购买 nike

通过 XML 导入,我还获得了外部服务器上 jpg 图像的 url 链接。我想复制图像。我尝试通过 Symfony 中的 UploadedFile() 函数来执行此操作,然后将它们添加到我的实体中。

通过以下代码,我想在 Symfony 图像对象中添加 url 图像。

$f = new UploadedFile();
$f->openFile($imageUrl);

所以打开文件后我想将它们添加到我的图像实体中。

$image = new image();
$image->setFile($f);

该实体包含以下文件参数:

/**
* Sets file.
*
* @param \Symfony\Component\HttpFoundation\File\UploadedFile $file
*/
public function setFile(UploadedFile $file = NULL) {
$this->file = $file;
}

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

然后我收到参数丢失的错误。但使用 from 可以使用以下代码:

$image = new image();
$image->setFile($request->files->get('images'));

最佳答案

我使用 vich uploader 包 ( https://github.com/dustin10/VichUploaderBundle ) 来上传图像,该包提供了一种从表单上传图像的方法。我和你有同样的用例。我必须从 xml 导入图像。

我使用 vich 服务 (vich_uploader.upload_handler) 从 xml 中执行此操作:

实体:

namespace AppBundle;

use Doctrine\ORM\Mapping AS ORM;
use Symfony\Component\HttpFoundation\File\File;

/**

* @ORM\Table(name="entity")
* @Vich\Uploadable
*/
class Entity
{

/**
* @ORM\Column(type="string", nullable=true)
*/
private $image;

/**
* @Vich\UploadableField(mapping="test_image", fileNameProperty="image")
* @var File
*/
private $imageFile;


/**
* @return File
*/
public function getImageFile()
{
return $this->imageFile;
}

/**
* @param File|\Symfony\Component\HttpFoundation\File\UploadedFile $image
*/
public function setImageFile(File $image = null)
{
$this->imageFile = $image;

if ($image) {
// It is required that at least one field changes if you are using doctrine
// otherwise the event listeners won't be called and the file is lost
$this->updatedAt = new \DateTime('now');
}
}
}

服务:

<?php

namespace AppBundle;

use Symfony\Component\HttpFoundation\File\UploadedFile;
use Vich\UploaderBundle\Handler\UploadHandler;

class ExternalImageUploader
{

private $uploadHandler;
private $kernelRootDir;


public function __construct(UploadHandler $uploadHandler, $kernelRootDir)
{
$this->uploadHandler = $uploadHandler;
$this->kernelRootDir = $kernelRootDir;
}

public function copyExternalFile($url, $entity)
{

$newfile = $this->kernelRootDir.'/../web/uploads/test.jpg';

copy($url, $newfile);
$mimeType = mime_content_type($newfile);
$size = filesize ($newfile);
$finalName = md5(uniqid(rand(), true)).".jpg";

$uploadedFile = new UploadedFile($newfile,$finalName,$mimeType, $size);

$entity->setImageFile($uploadedFile);
$this->uploadHandler->upload($entity,'imageFile');


}
}

服务.xml

<service id="app.external_image_uploader" class="AppBundle\ExternalImageUploader">
<argument type="service" id="vich_uploader.upload_handler" />
<argument>%kernel.root_dir%</argument>
</service>

关于php - 通过 URL 输入设置 Symfony 上传的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40454950/

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