xls文件正在上传到服务器上存储为文件夹

我正在使用laravel 5.4并尝试将一些xls格式的银行对帐单上传到服务器。

文件正在上传到磁盘上,而不是创build一个excel文件,而是在里面创build一个.txt文件的目录。

这个txt文件包含xls文件的内容。

. ├── 835e9d46-b43d-11e7-ad3c-847beb400c7ebank-statement.xls │  └── 0qaYUFrYBLfDupI5v1GlUBuU6aVA8ZQTKdCrR90o.txt └── bd4cb0fa-b43e-11e7-bdc8-847beb400c7ebank-statement.xls └── 2h2Z5Fy6seJtxxxAsYitZwTfA48XIOIpnc7W58xP.txt 

查看文件代码

 {{ Form::open(['route' => 'upload-statement', 'class' => 'form-horizontal', 'files' => true]) }} {{ csrf_field() }} <div class="form-group{{ $errors->has('statement_file') ? ' has-error' : '' }}"> <label for="email" class="col-md-4 control-label">Chose statement file</label> <div class="col-md-6"> <input autocomplete="off" id="statement_file" type="file" class="form-control" name="statement_file" required autofocus > @if ($errors->has('statement_file')) <span class="help-block"> <strong>{{ $errors->first('statement_file') }}</strong> </span> @endif </div> </div> <div class="form-group{{ $errors->has('ga_code') ? ' has-error' : '' }}"> <label for="password" class="col-md-4 control-label">GA Code</label> <div class="col-md-6"> <input id="ga_code" type="text" class="form-control" name="ga_code" required> @if ($errors->has('ga_code')) <span class="help-block"> <strong>{{ $errors->first('ga_code') }}</strong> </span> @endif </div> </div> <div class="form-group"> <label class="control-label col-lg-4"></label> <div class="col-lg-8"> <button class="btn btn-primary" id="uploadbankfileid" name="uploadbankfileid">Upload File</button> </div> </div> </form> 

控制器代码

 $statementFile = request()->file('statement_file'); $newFileName = Uuid::uuid1() . "bank-statement." . $statementFile->getClientOriginalExtension(); $originalFileName = $statementFile->getClientOriginalName(); $path = $request->file('statement_file')->store( '/'.$newFileName, 'bank-statements',['mimeType'=>$statementFile->getClientMimeType(),'mime'=>$statementFile->getClientOriginalExtension()] ); 

在Doku它站着:

“store方法接受文件相对于文件系统configuration的根目录的path,这个path不应该包含文件名,因为会自动生成唯一的ID作为文件名。

第一个参数只是它应该保存的文件夹

使用storeAsfunction

  storeAs(string $path, string $name, array|string $options = []) 

这是什么解决了我的问题

 $statementFile = request()->file('statement_file'); $newFileName = Uuid::uuid1() . "-bank-statement." . $statementFile->getClientOriginalExtension(); $uplodedPath = $statementFile->storeAs("/", $newFileName, ['disk' => 'bank-statements']); 

UploadedFile :: store()方法只需要两个参数,第一个参数是要存储文件的目录的名称,第二个参数是String disk-name或者array是['disk'=>'disk-name' ]的文件夹。 存储方法可用于我们不需要上传文件的任何自定义命名约定的情况。

UploadedFile :: storeAs()有三个参数,第二个参数是生成文件的自定义名称,第一个和第三个参数与UploadedFies :: store()方法的第一个和第二个参数相同。