我想上传带有表单的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);
致谢
答案 0 :(得分: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 MB,例如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文件”。我到达以下路径:{{1 }}
如果您无法从/etc/php/7.4/apache2/conf.d
获得响应,只需在终端phpinfo()
中编写,这将为您提供PHP的版本,因此,如果您在那里看到,则:
php -v
仅使用版本的前2位数字,然后转到我提到的PHP 7.4.10 (cli) ( NTS )
Copyright (c) The PHP Group
文件夹(而不是7.4键入2位数字的版本)
在conf.d目录中创建一个名为/etc/php/7.4/apache2/conf.d
的文件(只要文件以.ini结尾即可随意调用)。
此目录文件将覆盖您的php.ini设置
因此,创建文件并写入内部(使用所需的文件大小,我用了20M):
file-upload.ini
然后保存文件,然后使用我上面提到的命令重新启动Apache。
现在该文件应该已成功上传。