2016-12-22 2 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

Смежные вопросы