Я использую Laravel 5.4 для своего веб-сайта, и у меня возникает проблема, когда пользователь пытается загрузить файлы размером более 1 МБ.Эта проблема не появляется на локальном хосте.Я получаю сообщение об ошибке, которое никак не связано с размером файла, но это исключение MethodNotAllowedHttpException в строке 251. RouteCollection.php. Я использую метод для загрузки файлов: «PUT».
Я пробовал$ request-> файл ( 'postpic') -> storeAs ( '/ государственные / post_pic /', $ filenametostore);»и "Storage :: putFileAs ('public / post_pic', $ request-> file ('postpic'), $ filenametostore);"но ни один из них не работал онлайн для файлов размером более 1 МБ.Я также проверил опции php на cpanel, и они настроены на прием файлов размером 50 МБ (max_file_size), memory_limit 768 МБ, post_max_size 128 МБ.Я также связался с хост-сервером, и после открытия заявки, чтобы узнать, что не так, я получил ответ, что есть программная ошибка и конфигурация сервера в порядке.Я потратил два дня на поиск онлайн-решения, но не получил хороших результатов по этой теме, поэтому я задаю этот вопрос здесь, и я был бы очень признателен за любую поддержку для его решения.Наконец, я заметил, что когда я загружаю тот же файл размером 9 МБ в автономном режиме по сравнению с онлайн: глядя на вкладку «Сеть» в браузере, я могу обнаружить, что были обновления об идентификаторе пользователя и идентификаторе файла при загрузке этого файла в автономном режиме, но онлайн, сеть зависает на некоторое время без каких-либо обновлений, затем появляется страница с ошибкой.При использовании файла меньшего размера (менее 1,2 МБ) все работает нормально в сети и в автономном режиме.
Мой маршрут:
Route::PUT('/post/{id}/store',[
'as' => 'storepost',
'uses' => 'PostsController@store'
]);
Моя функция контроллера:
public function store(Request $request, $id, loggeduser $lu)
{
$this->validate($request,[
'body'=>'required',
'postpic'=>'nullable|max:40000'
]);
$profile=profile::find($id);
$isvideo=0;
if($request->hasfile('postpic')){
$filenamewithext=$request->file('postpic')->getClientOriginalName();
$filename=pathinfo($filenamewithext,PATHINFO_FILENAME);
$extension=$request->file('postpic')->getClientOriginalExtension();
$filenametostore='1_'.$filename.'_'.time().'.'.$extension;
$orgimage = Storage::disk('local')->putFileAs('public/post_pic', $request->file('postpic'), $filenametostore);
if(substr($request->file('postpic')->getMimeType(), 0, 5) == 'image') {
//Resize image here
$imagepath = public_path('storage/post_pic/'.$filenametostore);
$img = Image::make($imagepath)->resize(700, 400, function($constraint) {
$constraint->aspectRatio();
});
$img->save($imagepath);
}elseif(substr($request->file('postpic')->getMimeType(), 0, 5) == 'video') {
//it's a video
$isvideo=1;
}
}else{
//there is no photo
$filenametostore='0';
}
$logged_user_id=$lu->userid;
$post=new post();
$post->post_pic=$filenametostore;
$post->isvideo = $isvideo;
$post->body=$request->input('body');
$post->user_id=$logged_user_id;
$post->profile_id=$id;
$post->save();
return redirect('/profile/'.$id)->with('success','Your story is alive..');
}
Файл лезвия:
{!!Form::open(['action'=>['PostsController@store','id'=>$profile->id],'method'=>'PUT','enctype'=>'multipart/form-data','files'=>true])!!}
{!! csrf_field() !!}
<input id="postpic" type="file" name="postpic" class="btn btn-primary" style="width:100%;"/>
{{Form::textarea('body','',['class'=>'form-control','required','placeholder'=>'Post a story on your profile..'])}}
{{Form::submit('Post',['class'=>'btn btn-success'])}}
{!!Form::close()!!}
Заранее спасибо.