2017-10-18 55 views
1

我正在使用laravel 5.4并尝试将一些xls格式的银行对帐单上传到服务器。xls文件获取存储为上传到服务器的文件夹

文件正在上传到磁盘上,但不是创建一个excel文件,而是创建一个其中包含.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()] 
     ); 
+0

如何上传文件以及如何创建它? –

+0

尝试用guessClientExtension代替getClientOriginalExtension –

+0

完成但不起作用 – sumit

回答

0

“的存储方法接受该文件应当相对于存储在所述路径到文件系统的配置根目录。这个路径不应该包含一个文件名,因为一个唯一的ID wi将自动生成以作为文件名称。“

的第一个参数是唯一的,它应该保存

使用storeAs功能

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

这是解决我的问题的文件夹

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

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

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

相关问题