[英]Empty uploaded file in Symfony
我想上传一个带有表单的 csv 文件,但如果文件太大(> 200 行),它就不起作用。
例如,当我上传一个大文件时,我会这样做:
die(var_dump($request->files->get('file')));
结果如下:
object(Symfony\Component\HttpFoundation\File\UploadedFile)#9 (7) { ["test":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=> bool(false)
["originalName":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=> string(12) "big_file.csv"
["mimeType":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=> string(24) "application/octet-stream"
["size":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=> int(0)
["error":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=> int(1) ["pathName":"SplFileInfo":private]=> string(0) ""
["fileName":"SplFileInfo":private]=> string(0) "" }
可以看到,大小为0,fileName和pathName为空,mime类型错误(应该是text/csv)。 当我上传一个小文件(大约 100 行)时,它可以工作,有合适的大小、路径名/文件名等。
不知道是不是PHP的问题?
仅供参考,我在 PHP 代码中有这些设置:
ini_set('upload_max_filesize', '40M');
ini_set('post_max_size', '40M');
ini_set('max_input_time', 600);
ini_set('max_execution_time', 600);
ini_set('memory_limit', '256M');
set_time_limit(0);
问候
该文件无法上传,因为其大小大于 PHP 配置文件中允许的大小。
您可以通过查看此方法生成的错误来了解这一点:
$request->files->get('file')->getErrorMessage()
您可以通过几个简单的步骤来实现这一点。
直接覆盖php.ini:
编辑您的/etc/php/7.4/apache2/php.ini
(而不是 7.4 使用您的版本 - 当您进一步阅读时会解释如何找到您的版本,简而言之,在终端php -v
写入并使用 2 位数字,例如 7.4)
在那里找到“upload_max_filesize”和“post_max_size”,然后将值更改为(使用您需要的任何大小,我使用了 20 兆字节,例如 20M):
upload_max_filesize = 20M
post_max_size = 20M
然后保存文件并在我的情况下重新启动 Apache 命令是:
/etc/init.d/apache2 restart
或者您可能需要在之前使用 sudo:
sudo /etc/init.d/apache2 restart
或者在其他情况下:
sudo service apache2 restart
现在应该工作。
另一种选择是覆盖 php.ini 而不直接更改文件:
从响应中的代码中回显或打印或返回以下函数phpinfo()
您将找到一个名为“扫描此目录以获取其他 .ini 文件”的列,我到达了以下路径: /etc/php/7.4/apache2/conf.d
如果您无法从phpinfo()
获得响应,只需在终端php -v
写入,这将为您提供 PHP 的版本,因此如果您会在那里看到:
PHP 7.4.10 (cli) ( NTS )
Copyright (c) The PHP Group
仅使用版本的前 2 位数字并转到我提到的此文件夹/etc/php/7.4/apache2/conf.d
(而不是 7.4 键入您的 2 位数字版本)
在您的 conf.d 目录中创建一个名为: file-upload.ini
的文件(您可以随意调用该文件,只要它以 .ini file-upload.ini
)。 此目录文件覆盖您的 php.ini 设置
因此,创建文件并写入其中(在您需要的任何文件大小中使用,我使用了 20M):
upload_max_filesize = 20M
post_max_size = 20M
然后保存文件,然后使用我上面提到的命令重新启动 Apache。
现在文件应该成功上传了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.