我使用Symfony作为REST API的集合,并且我一直得到一个空的上传文件的例外。在每天约有5000个用户的应用程序中,它每天发生大约5-10次。
这是相关代码:
$receipt = $request->files->get('receipt');
if (!$receipt || !($receipt instanceof UploadedFile) || !$receipt->isValid()) {
throw new \Exception('No uploaded receipt image. Maybe the image is too large?');
}
我已经将upload_max_filesize
和post_max_size
增加到非常高的值,但错误仍然存在。我注意到用户代理总是“奇怪”:
User-Agent: myappname/104 CFNetwork/808.0.2 Darwin/16.0.0
其中myappname
是我的移动应用程序的名称(只有最后一部分,没有com.mycompany.myappname)。它可能是模拟器还是黑客企图?
如果upload_max_filesize大于post_max_size然后增加post_max_size然后它会比upload_max_size大,如果post_max_size的值大于memory_limit,那么增加memory_limit然后它将大于post_max_size。如果仍然发生,那么如果您的前端和后端位于单独的域用户“Nelmio CORS”设置上,请尝试使用ip或域限制REST API
# Nelmio CORS
nelmio_cors:
defaults:
allow_origin: ["%cors_allow_origin%"]
allow_methods: ["POST", "PUT", "GET", "DELETE", "OPTIONS"]
allow_headers: ["content-type", "authorization"]
max_age: 3600
paths:
'^/': ~
通过使用composer install nelmio / cors-bundle或类似的。