2016-12-22 23 views
2

ファイルが存在するかどうかを確認するにはInput::hasFile('File')を使用し、trueを返し、ファイルのバイナリを取得しました。 ただし、Input::file('File')->getClientOriginalExtension()は空の文字列を返します。Laravel 5 getClientOriginalExtension()は空の文字列を返します

は、ここに私のコントローラ

public function ConfirmWrite() 
    { 
     if (!Session::has('id')) { 
      return '0:Please log in.'; 
     } 
     $Data = Request::all(); 
     $Data['uid'] = Session::get('id'); 
     $Data['mid'] = 0; 
     var_dump(Input::file('File')->getClientOriginalExtension()); 
     return '1'; 
     if (Input::hasFile('File')) { 
      $file = Input::file('File'); 

      $rules = ['File' => 'mimes:jpeg,bmp,png,jpg|max:10000']; 

      $validator = Validator::make(['File' => $file], $rules); 
      if ($validator->fails()) { 
       return '0:Check your File.'; 
      } 
      $Data['Thumbnail'] = $file->getClientOriginalExtension(); 
      $destinationPath = 'images/post/thumbnail/'; 
      $Content = Post::SaveContent($Data); 
      if($Data['Share'] == 'true'){ 
       $fb = FacebookHelper::WithToken(Session::get('FbToken')); 
       $Link = URL::to('/post').'/'.$Content; 
       $fb->ShareLink($Link); 
      } 
      $upload_success = $file->move($destinationPath, $Content . '.' . $Data['Thumbnail']); 
      echo "asdfasdfasdf : ".$Data['Thumbnail']; 
      if ($upload_success) { 
       UsefulHelper::ImageResizing($destinationPath, $Content . '.' . $Data['Thumbnail'], 320, 'small'); 
       UsefulHelper::ImageResizing($destinationPath, $Content . '.' . $Data['Thumbnail'], 700, 'medium'); 
       UsefulHelper::ImageResizing($destinationPath, $Content . '.' . $Data['Thumbnail'], 1920, ''); 
       foreach (explode(',', $Data['Tag']) as $tag) { 
        HashTag::SaveHashTag($tag, 'post', $Content); 
       } 
       return '1:' . $Content; 
      } else { 
       return '0:Somethings wrong'; 
      } 
     } else { 
      $Content = Post::SaveContent($Data); 
      if($Data['Share'] == 'true'){ 
       $fb = FacebookHelper::WithToken(Session::get('FbToken')); 
       $Link = URL::to('/post').'/'.$Content; 
       $fb->ShareLink($Link); 
      } 
      foreach (explode(',', $Data['Tag']) as $tag) { 
       HashTag::SaveHashTag($tag, 'post', $Content); 
      } 
      return '1:' . $Content; 
     } 

    } 

だと以下のコードは、フロントエンドのAjaxコードです。

var fData = new FormData; 
       GlobalVar.Thumbnail == '' ? '' : fData.append('File', DataURLtoBlob(GlobalVar.Thumbnail)); 
       fData.append('Title', $('.contents-details').find('h1').html()); 
       fData.append('Subtitle', $('.contents-details').find('h2').html()); 
       fData.append('Content', $('#post-editor').froalaEditor('html.get')); 
       fData.append('Align', EditorAlign); 
       fData.append('Tag', Tag); 
       fData.append('Share',GlobalVar.FBShare); 
       $.ajax({ 
        url: '{{ URL::to('/post/write') }}', 
        type: 'post', 
        processData: false, 
        enctype: "multipart/form-data", 
        contentType: false, 
        cache: false, 
        data: fData, 
        headers: { 
         'X-CSRF-Token': '{{ csrf_token() }}', 
        }, 
        success: function (result) { 
         var Check = $.trim(result).split(':'); 
         $('.submit-loading').css('display', 'none'); 
         if (Check[0] == '1') { 
          checkUnload = false; 
          location.href = '{{ URL::to('post') }}/' + Check[1]; 
         } else { 
          console.log(result); 
          Warning(Check[1]); 
         } 
        }, 
       }); 

どこにバグコードがあり、間違っているのかわかりません。私を助けてください。これは私を怒らせる。

答えて

3

getClientOriginalExtensionメソッドはアップロードされた実際のファイルの拡張子を返しますsome-image.pdf、これは安全な値とはみなされません。代わりに、guessExtensionを使用することをお勧めします。

guessExtensionメソッドは実際のMIMEタイプを使用し、関連するファイルタイプを返します。

+0

私のために働く...!コメントしていただきありがとうございます:) – OhHyeonJun

関連する問題