我有这个应该上传文件的api。该代码旨在在$request->files
中查找上传的文件,但该变量为空。相反,我在$content
中找到了它的字符形式( )。这种行为是错误还是我错过了什么?
我检查了composer.json
但是没有包含或配置上传(Vich或DoctrineExtensions)包。我可以设置其中一个,但我不知道当前的行为本质上是错误的还是以前的开发人员比我更了解这个?
为了记录,我有File类的yaml文件,看起来类似于DoctrineExtensions - Uploadable
MyApp\FileBundle\Entity\File:
type: entity
table: file_records
repositoryClass: MyApp\FileBundle\Repository\FileRepository
id:
id:
type: integer
generator:
strategy: AUTO
fields:
path:
name: path
type: string
name:
name: string
type: string
mimeType:
name: mimeType
type: string
nullable: true
size:
name: size
type: decimal
nullable: true
initialName:
name: initial_name
type: string
Ps:文件应该保存为文件,而不是数据库中的blob。
答案 0 :(得分:0)
看起来客户端在典型HTTP请求的主体中发送文件,而不是使用多部分请求。 Symfony的$request->files
(一般来说,使用PHP' s $_FILES
的所有内容)仅适用于多部分请求。
您既可以修复您的客户端以发送多部分请求(并从PHP提供的安全保护中受益),也可以通过以下方式自行处理原始内容:
// Be careful to check that the real content is not PHP or something harmful this before
file_put_contents('/path/to/myimage.png', $request->getContent());