上传大小大于 1MB 的图片时出错
Error on uploading images with size greater than 1MB
我以前在服务器上上传图片没有任何问题,但是在我安装了 spatie larave-image-optimizer 之后,我 运行 遇到了一些问题。我可以上传任何小于 1MB 的图片,但超过 1MB 的图片就会损坏
我试图控制日志或转储错误,以便我可以看到发生了什么,但我不明白错误消息告诉我什么。
$validate = Validator::make($request->all(), [
'docs.*' => [
'sometimes',
'image',
'mimes:jpeg,png,jpg,gif,svg',
'max:51200',
],
]);
if ($validate->fails()) {
return response(['error' => 'Error!'], 422);
}
if ($request->file('docs')) {
foreach ($request->file('docs') as $doc => $image) {
$image->storeAs(
'/folder/' . $id , //I get this id from the params
$image->getClientOriginalName(),
'public'
);
}
}
此路由通过图像优化器中间件
Route::middleware('optimizeImages')->group(function () {
Route::post("url", "...Controller@store");
});`
我收到这个错误:
exception: "InvalidArgumentException"
file: "{app_path}\vendor\spatie\image-> optimizer\src\Image.php"
line: 14
message: "`` does not exist"
为什么 1MB 的图片会上传,而 2MB+ 的图片不会?我该如何解决这种行为?
请记住,在安装此软件包之前一切正常。我上传了很多超过 4MB 的图片,但我需要优化它们以便有效地使用我的服务器磁盘。
编辑#1
如果我不使用中间件会出错:
exception: "RuntimeException"
file: "{app_path}\vendor\symfony\var-dumper\Server\Connection.php"
line: 63
message: "stream_socket_sendto(): A request to send or receive data was
disallowed because the socket is not connected and (when sending on a
datagram socket using a sendto call) no address was supplied.↵↵"
转到您的 php.ini
文件并更改那些
upload_max_filesize = 10M
post_max_size = 10M
之后确保重新启动 Apache 服务器
在您的 php.ini
中更改值,如 -
memory_limit=32M
upload_max_filesize=24M
post_max_size=32M
重启你的服务器。尝试 composer update
。如果不起作用,请删除您的 spatie/laravel-image-optimizer
并重新安装 - composer require spatie/laravel-image-optimizer
然后发布 php artisan vendor:publish --provider="Spatie\LaravelImageOptimizer\ImageOptimizerServiceProvider"
我以前在服务器上上传图片没有任何问题,但是在我安装了 spatie larave-image-optimizer 之后,我 运行 遇到了一些问题。我可以上传任何小于 1MB 的图片,但超过 1MB 的图片就会损坏
我试图控制日志或转储错误,以便我可以看到发生了什么,但我不明白错误消息告诉我什么。
$validate = Validator::make($request->all(), [
'docs.*' => [
'sometimes',
'image',
'mimes:jpeg,png,jpg,gif,svg',
'max:51200',
],
]);
if ($validate->fails()) {
return response(['error' => 'Error!'], 422);
}
if ($request->file('docs')) {
foreach ($request->file('docs') as $doc => $image) {
$image->storeAs(
'/folder/' . $id , //I get this id from the params
$image->getClientOriginalName(),
'public'
);
}
}
此路由通过图像优化器中间件
Route::middleware('optimizeImages')->group(function () {
Route::post("url", "...Controller@store");
});`
我收到这个错误:
exception: "InvalidArgumentException"
file: "{app_path}\vendor\spatie\image-> optimizer\src\Image.php"
line: 14
message: "`` does not exist"
为什么 1MB 的图片会上传,而 2MB+ 的图片不会?我该如何解决这种行为?
请记住,在安装此软件包之前一切正常。我上传了很多超过 4MB 的图片,但我需要优化它们以便有效地使用我的服务器磁盘。
编辑#1 如果我不使用中间件会出错:
exception: "RuntimeException"
file: "{app_path}\vendor\symfony\var-dumper\Server\Connection.php"
line: 63
message: "stream_socket_sendto(): A request to send or receive data was
disallowed because the socket is not connected and (when sending on a
datagram socket using a sendto call) no address was supplied.↵↵"
转到您的 php.ini
文件并更改那些
upload_max_filesize = 10M
post_max_size = 10M
之后确保重新启动 Apache 服务器
在您的 php.ini
中更改值,如 -
memory_limit=32M
upload_max_filesize=24M
post_max_size=32M
重启你的服务器。尝试 composer update
。如果不起作用,请删除您的 spatie/laravel-image-optimizer
并重新安装 - composer require spatie/laravel-image-optimizer
然后发布 php artisan vendor:publish --provider="Spatie\LaravelImageOptimizer\ImageOptimizerServiceProvider"