当在ajax调用中传递pdf文件时,file_get_content()会给出错误

时间:2018-03-08 05:19:58

标签: ajax laravel-5

当我尝试在控制器端通过ajax传递pdf时 file_get_content()会出现这样的错误

file_get_contents(): Filename cannot be empty

我的输出如下: -

Illuminate\Http\UploadedFile Object(
[test:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 
[originalName:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 2017-playing-rules.pdf
[mimeType:Symfony\Component\HttpFoundation\File\UploadedFile:private] => application/octet-stream
[size:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 0
[error:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 1
[hashName:protected] => 
[pathName:SplFileInfo:private] => 
[fileName:SplFileInfo:private] => 

这里“[pathName:SplFileInfo:private] =>”给出null响应,该响应应具有我上传文件的临时路径。

这是我的ajax电话: -

$('#formAddLeague').on('success.form.bv', function(e) {
    e.preventDefault();
    var formData = new FormData(this);
    $.ajax({
        url:'{{ url('restoreleague') }}',
        data:formData,
        type:'post',
        dataType:'json',
        cache: false,
        contentType: false,
        processData: false,
        success: function(data)
        {
            $('#loader').hide();
            if(data.key == 1)
            {
                notify('League has been updated Successfully.','blackgloss');
            }
        }
    });
});

在控制器中我使用了以下内容: -

$import_rule = $request->file('importRule');

这是我的控制器: -

    public function restore(Request $request)
        {
        $league_id = $request->get('hiddenLeagueId');
        $import_rule = $request->file('importRule');
        $league_rule_url = $request->get('txtLeagueRule');
        $objLeague = League::find($league_id);
        if (!empty($import_rule)) {
            $originalName = $import_rule->getClientOriginalName();
            $ruleFileName = pathinfo($originalName, PATHINFO_FILENAME) . '.' . pathinfo($originalName, PATHINFO_EXTENSION);
            $s3 = Storage::disk('s3');
            $filePath = 'league_rules/' . $ruleFileName;
            if ($s3->put($filePath, file_get_contents($import_rule) , 'public'))
                {
                $ruleURL = $s3->url($filePath);
                $objLeague->league_rules = $ruleURL;
                $objLeague->rules_filename = $ruleFileName;
                }
            }
          else
        if (!empty($league_rule_url))
            {
            $checkExtension = pathinfo($league_rule_url, PATHINFO_EXTENSION);
            if ($checkExtension != 'pdf')
                {
                $msg = "The selected url extension is not valid.";
                return $msg;
                }
              else
                {
                $objLeague->league_rules = $league_rule_url;
                }
    }
        $objLeague->league_name = $request->get('txtLeagueName');
        $objLeague->league_email = $request->get('txtLeagueEmail');
        $objLeague->league_phone = $this->replacePhoneNumber($request->get('leagueContactNo'));
        $objLeague->league_info = $request->get('txtLeagueInfo');
        $objLeague->level_id = $request->get('txtLevel');
        $objLeague->age_required = $request->get('txtMinRequiredAge');
        $objLeague->league_website = $request->get('leagueWebsite');
        $objLeague->save();
        $response['key'] = 1;
        return $response;
        }

这是我的表单: -

<div id="tab2" class="tab-pane">
                                    <form id="formAddLeague" method="post">
                                        {{ csrf_field() }}
                                        <input id="hiddenLeagueId" type="hidden" name="hiddenLeagueId" value="{{$leagueDetail->league_id or ''}}">
                                        <div class="row">
                                            <div class="col-md-8">
                                                <div class="form-group">
                                                    <label class="control-label"><b>LEAGUE NAME</b></label>
                                                    <input type="text" id="txtLeagueName" name="txtLeagueName" value="{{$leagueDetail->league_name or ''}}" class="form-control">
                                                </div>
                                            </div>
                                            <div class="col-md-4">
                                                <div class="form-group">
                                                    <label class="control-label"><b>LEAGUE ID</b></label><br>
                                                    <span class="disabled-color" id="leagueId">{{$leagueDetail->league_id or ''}}</span>
                                                </div>
                                            </div>
                                        </div>
                                        <div class="row">
                                            <div class="col-md-4">
                                                <div class="form-group">
                                                    <label class="control-label"><b>TYPE OF LEAGUE</b></label>
                                                    <select id="txtLevel" name="txtLevel" class="form-control">
                                                        <option value="">-- Select Type of League --</option>
                                                        @foreach($levelList as $level)
                                                        <option value="{{ $level->level_id }}" @if($leagueDetail->level_id == $level->level_id) {{"selected='selected'"}} @endif>{{ $level->level_name }}</option>
                                                        @endforeach
                                                    </select>
                                                </div>
                                            </div>
                                            <div class="col-md-4">
                                                <div class="form-group">
                                                    <label class="control-label"><b>MIN AGE REQUIREMENT</b></label>
                                                    <select id="txtMinRequiredAge" name="txtMinRequiredAge" class="form-control">
                                                        <option value="ALL AGES" @if($leagueDetail->age_required == 'ALL AGES') {{ "selected='selected'" }} @endif>All AGES</option>
                                                        <option value="18 AND OVER" @if($leagueDetail->age_required == '18 AND OVER') {{ "selected='selected'" }} @endif>18 AND OVER</option>
                                                    </select>
                                                </div>
                                            </div>
                                            <div class="col-md-4">
                                                <div class="form-group" style="overflow: visible!important;">
                                                    <label class="control-label"><b>SPORTS OFFERED</b></label>
                                                    <select id="txtLevel" name="txtLevel" class="form-control selectpicker" multiple  data-style="form-control">
                                                        @foreach($levelList as $level)
                                                        <option value="{{ $level->level_id }}" @if($leagueDetail->level_id == $level->level_id) {{"selected='selected'"}} @endif>{{ $level->level_name }}</option>
                                                        @endforeach
                                                    </select>
                                                </div>
                                            </div>
                                        </div>
                                        <div class="row">
                                            <div class="col-md-4">
                                                <div class="form-group">
                                                    <label class="control-label"><b>LEAGUE EMAIL</b></label>
                                                    <input style="text-transform: lowercase;" type="email" id="txtLeagueEmail" name="txtLeagueEmail" value="{{$leagueDetail->league_email or ''}}" class="form-control"  placeholder="Enter Your Email">
                                                </div>
                                            </div>
                                            <div class="col-md-4">
                                                <div class="form-group">
                                                    <label class="control-label"><b>LEAGUE PHONE</b></label>
                                                    <input placeholder="(xxx) xxx-xxxx" type="text" name="leagueContactNo" id="leagueContactNo" value="{{$leagueDetail->league_phone or ''}}" class="form-control">
                                                </div>
                                            </div>
                                            <div class="col-md-4">
                                                <div class="form-group">
                                                    <label class="control-label"><b>LEAGUE WEBSITE</b></label>
                                                    <input id="leagueWebsite" type="text" name="leagueWebsite" value="{{$leagueDetail->league_website or ''}}" class="form-control"  placeholder=" League website">
                                                </div>
                                            </div>
                                        </div>
                                        <div class="row">
                                            <div class="col-md-12">
                                                <div class="form-group">
                                                    <label class="control-label"><b>LEAGUE RULES</b></label>
                                                    <div class="row">
                                                        <div class="col-md-1">
                                                            <div class="radio radio-info">
                                                                <input type="radio" name="user_radio" id="file_radio" onclick="leagueRule(1)" checked>
                                                                <label> Use&nbsp;File </label>
                                                            </div>
                                                        </div>
                                                        <div class="col-md-11">
                                                            <div class="col-sm-12">
                                                                <div class="fileinput fileinput-new input-group" data-provides="fileinput">
                                                                    <div class="form-control" data-trigger="fileinput">
                                                                        <i class="glyphicon glyphicon-file fileinput-exists"></i>
                                                                        <span class="fileinput-filename"></span>
                                                                    </div>
                                                                    <span class="input-group-addon btn btn-default btn-file">
                                                                        <span class="fileinput-new"><i class="fa fa-upload"></i></span>
                                                                        <span class="fileinput-exists">Change</span>
                                                                        <input type="file" name="importRule" id="importRule">
                                                                    </span>
                                                                    <a href="#" class="input-group-addon btn btn-default fileinput-exists" data-dismiss="fileinput">Remove</a>
                                                                </div>
                                                            </div>
                                                        </div>
                                                    </div>
                                                    <div class="row">
                                                        <div class="col-md-1">
                                                            <div class="radio radio-info">
                                                                <input type="radio" name="user_radio" id="url_radio" onclick="leagueRule(2)">
                                                                <label> Use&nbsp;URL </label>
                                                            </div>
                                                        </div>
                                                        <div class="col-md-11">
                                                            <input disabled type="text" id="txtLeagueRule" name="txtLeagueRule" value="{{$leagueDetail->league_rules or '' }}" class="form-control"  placeholder="Enter Link">
                                                        </div>
                                                    </div>
                                                </div>
                                            </div>
                                        </div>

                                        <div class="row">
                                            <div class="col-md-12">
                                                <div class="form-group col-md-12 col-sm-12 col-xs-12">
                                                    <label class="control-label"><b>ABOUT</b></label>
                                                    <textarea id="txtLeagueInfo" style="resize: none;" class="form-control" rows="3" data-minwords="3" maxlength="238" name="txtLeagueInfo" placeholder="Type your message">{{$leagueDetail->league_info or ''}}</textarea>
                                                    <div id="textarea_feedback" style="text-align:right; color: red"></div>
                                                    {{-- <div id="textarea_feedback" class="text-left disabled-color"></div> --}}
                                                </div>
                                            </div>
                                        </div>
                                        <div class="form-group text-left p-t-md">
                                            <button type="submit" class="btn btn-info">UPDATE</button>
                                        </div>
                                    </form>
                                </div>

0 个答案:

没有答案