php - 如何在 Laravel 5.6 中修复图像输入值 "null"?

标签 php laravel dropzone.js

在我的 laravel 应用程序中,我以编程方式使用 dropzone 来上传图像。这是我的 Controller ,用于在 VehicleController 中存储图像

$photos = $request->file('file');
dd($photos);
        if (!is_array($photos)) {
            $photos = [$photos];
        }

        if (!is_dir($this->photos_path)) {
            mkdir($this->photos_path, 0777);
        }

        for ($i = 0; $i < count($photos); $i++) {
            $photo = $photos[$i];
            $name = sha1(date('YmdHis') . str_random(30));
            $save_name = $name . '.' . $photo->getClientOriginalExtension();//this is line 75
            $resize_name = $name . str_random(2) . '.' . $photo->getClientOriginalExtension();

            Image::make($photo)
                ->resize(250, null, function ($constraints) {
                    $constraints->aspectRatio();
                })
                ->save($this->photos_path . '/' . $resize_name);

            $photo->move($this->photos_path, $save_name);

            $upload = new Upload();
            $upload->filename = $save_name;
            $upload->resized_name = $resize_name;
            $upload->original_name = basename($photo->getClientOriginalName());
            $upload->save();
        }
        return Response::json([
            'message' => 'Image saved Successfully'
        ], 200);

并且以编程方式 jquery 是

Dropzone.autoDiscover = false;

// Dropzone class:
var myDropzone = new Dropzone("div#my-dropzone", { url: '/form'});

路线

Route::post('form','VehicleController@store');

我的 Blade 文件是

<div class="dropzone" id="my-dropzone"> 
    <div class="dz-message">

              <div class="col-xs-8">
                 <div class="message">
                    <p>Drop files here or Click to Upload</p>
                 </div>
              </div>
    </div>
    <div class="fallback">
        <input type="file" name="file" multiple>

    </div>
</div>

但是当我单击表单提交按钮时发生以下错误,

1/1) FatalErrorException

Call to a member function getClientOriginalExtension() on null
in VehicleController.php line 75

当我使用 dd(photos) 时;上

$photos = $request->file('file');

结果出现“空”按摩,如何解决这个问题?

最佳答案

Please try using below AJAX Code.

<form method="post" action="{{url('form')}}" enctype="multipart/form-data">

Remove the Action(action="{{url('form')}}") from your form Tag.

var datastring = $('#fromid').serialize();  

$.ajax({  

    url: "controller url",  
                    type: 'post',  
                    contentType: "application/x-www-form-urlencoded",  
                    data: datastring,  
                    success: function(data){  
                        if(data == '100'){  
                            if($('#file').val() != ''){  
                            var form = $('#fromid')[0];   
                            var formData = new FormData(form);  
                            var imageurl='controller image upload url';

                                $.ajax({  
                                    url:imageurl,  
                                    type:"post",  
                                    data:formData,  
                                    processData:false,  
                                    contentType:false,  
                                    cache:false,  
                                    async:false,  
                                    success: function(data){  
                                        setTimeout(function(){  
                                            window.location.href="redirect url";  
                                        },4000);   
                                    }  
                                });  

                            }else{  
                                setTimeout(function(){  
                                    window.location.href="redirct url";  
                                },4000);  
                            }  

                        }else{  
                            alert(data);  
                        }   
                    }  
               });  


-------- Controller code.  
Print_r($_FILES); //You got the result.

关于php - 如何在 Laravel 5.6 中修复图像输入值 "null"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51415304/

相关文章:

php - 在 Laravel 的模型访问器中使用关系

javascript - Laravel Form 在提交时运行 JS 函数

javascript - 使用分块上传的 Dropzone.js vdropzone-success () 没有响应

php - symfony2 中 Avalanche-imagine 的问题

php - 加密的 Sql 数据在服务器之间传输时是否安全

php - 如何在 Laravel 5.1 中编写原始查询?

dropzone.js - 大文件上传 - 请求被取消

javascript - ajax 调用后 dropzone 不显示表单

php - 如何在 PHP 中构建跨数据库查询?

php - Laravel AJAX Post 数组在服务器上变空