【问题标题】:Symfony 2: How do I manually assign a file to an entity which has been configured to use VichUploaderBundle to handle file uploadsSymfony 2:如何手动将文件分配给已配置为使用 VichUploaderBundle 处理文件上传的实体
【发布时间】:2014-02-28 14:14:20
【问题描述】:

我已设置 VichUploaderBundle 以方便上传我的用户实体的个人资料图片。我正在使用 GaufretteStorage 选项,配置为使用本地文件系统,当用户通过表单上传图像时一切正常。

我现在希望能够自己在代码中将个人资料图像文件分配给用户实体,而不是依靠用户通过表单上传。我该怎么做?

我希望我足够清楚....基本上我有一个图像文件的内容(我可以通过 file_get_contents() 或类似的方法获取),我想将此文件分配给用户配置文件图像属性。

【问题讨论】:

    标签: php symfony gaufrette vichuploaderbundle


    【解决方案1】:

    在联系了捆绑包的维护者后,他提供了这个解决方案,回答了我的问题:

    看看这个https://github.com/dustin10/VichUploaderBundle/pull/200/files

    请记住,bundle 是由实体生命周期事件(onPersist onLoad 等)触发的,但只有在实体中注入 UploadedFile 的实例时,它才会管理副本。

    如果您想手动创建文件但仍使用捆绑包管理它,则必须在实体中注入和 UploadedFile。

    【讨论】:

    【解决方案2】:

    我不知道我是否理解你,但我认为这会有所帮助:

    1. 在您的用户实体“图像”或“照片”中创建一个新属性
    2. 把图片放到“web/uploads/user_1234.jpg”中,并将这个路径存放在 之前创建的“图像”属性。

    如果您需要其他任何内容,请澄清您的问题。

    【讨论】:

    • 感谢您的回答,虽然我可能不是很清楚。 VichUploaderBundle 允许您使用 Gaufrette 进行存储,因此您可以使用文件命名器等存储选项。因此,当您上传文件时,它会被命名并上传到适当的位置。我想知道如何在不通过表单处理文件上传的情况下实现这一点。你是说如果我按照你的指示,那么文件将被移动到适当的存储空间?例如亚马逊 S3?
    猜你喜欢
    • 1970-01-01
    • 2015-10-27
    • 1970-01-01
    • 2016-10-08
    • 1970-01-01
    • 1970-01-01
    • 2016-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多