2016-12-30 28 views
1

Laravel 5.0を使用しています。画像のアップロードにはdropzone.jsを使用しています。実際にフォルダへのアップロードやデータベースファイルが、それは郵便法上の非オブジェクト 上のメンバ関数getClientOriginalName()へLaravel dropzoneファイルのアップロードでgetClientOriginalName()エラーを克服する方法は?

コールのようなエラーを投げています。

どこが間違っていますか?

表示ファイル、

以下
<form method="POST" class="dropzone dz-clickable" id="productDropzone" action="{{url()}}/cms/website/pages/upload_files" enctype="multipart/form-data"> 
           <div class="dz-default dz-message"> 
           <span>Drop files here to upload</span> 
           </div> 
           <input name="_token" type="hidden" value="{{ csrf_token() }}"> 
          <input type="submit" value="Upload" id="submit_all"/> 
          </form> 

は、あなたが起きてから、エラーを防ぐためにしたい場合は、あなたには、いくつかを追加することができます

Dropzone.autoDiscover = false; 
var myDropzone = new Dropzone("form#productDropzone", { 
    paramName : 'file', 
    maxFilesize: 3, // MB 
    maxFiles: 3, 
    autoProcessQueue: false, 
    addRemoveLinks: true, 
    init: function() { 
     this.on("addedfile", function(file) { fileupload_flag = 1; }); 
     this.on("complete", function(file) { fileupload_flag = 0; }); 
    }, 
    accept: function(file, done) 
    { 
     var re = /(?:\.([^.]+))?$/; 
     var ext = re.exec(file.name)[1]; 
     ext = ext.toUpperCase(); 
     if (ext == "JPG" || ext == "JPEG" || ext == "PNG" || ext == "GIF" || ext == "BMP") 
     { 
      done(); 
     }else { 
      done("Please select only supported picture files."); 
     } 
    }, 
    success: function(file, response) { 
     obj = JSON.parse(response); 
     file.previewElement.querySelector("file").src = obj.src; 
     // alert(obj.src);return false; 
    } 
}); 
$('#submit_all').click(function(){ 
    myDropzone.processQueue(); 
}); 

コントローラ機能、

$com_id  = Auth::user()->company_id; 

    $file = Request::file('file'); 
     $destinationPath = public_path() . '/images/section/'; 
     $filename = strtolower($file->getClientOriginalName()); 

     $upload_success = $file->move($destinationPath, $filename); 

     if ($upload_success) { 

      $upload = new Cms_banner_master(); 
      $upload->product_banner = json_encode($filename); 
      $upload->company_id = $com_id; 
      $upload->home_banner ="1"; 
      $upload->save(); 

      return Response::json(array($fileName)); 
      } else 
      { 
      return Response::json('error', 400); 

     } 
+0

タイトルとコードは 'getClientOriginalName'を表示しますが、エラーが表示されると' getClientOriginalExtension'が表示されますか?また、 '作曲家ショー|あなたのコマンドラインからgrep -i "symfony/http-foundation"を実行し、使用しているhttp-foundationのバージョンを教えてください。 –

+0

複数のファイルアップロードを使用しているため、ファイルとして配列にアクセスする必要があります。 –

+0

**作曲家のショー| grep -i "symfony/http-foundation" ** 警告:この開発ビルドビルドは60日以上経過しています。 私の作曲家のバージョンは、 '作曲者バージョン1.0-dev(72cd6afdfce16f36a9fd786bc1b2f32b851e764f)2015-12-28です。最新のバージョンを入手するには、「/ usr/local/bin/composer自己更新」を実行して更新することをお勧めします。 17:35:19' – Mohan

答えて

-1

、私のjsであります最初にファイルの妥当性チェックを行います。

のisValid方法で例えば

アップデート:私はあまりにもhasFile方法を追加しました。

if(Request::hasFile('file') { 
    $file = Request::file('file'); 

    if($file->isValid()) { 
     $destinationPath = public_path() . '/images/section/'; 
     $filename = strtolower($file->getClientOriginalName()); 

     $upload_success = $file->move($destinationPath, $filename); 

     if ($upload_success) { 
      ... 
     } 
    } 
} else { 
    return Response::json('No file uploaded', 409); 
} 

そして私はまた、アップロードされたファイルの新しい名前を生成し、あなたがgetClientOriginalName必要はありません。このよう:「ユーザを信用したことがない」の精神で

$filename = $com_id.'_'.date('YmdHis')'.'.$file->guessExtension(); 

とさせないことをあなたのサーバーに保存するファイルからファイル名を選択します。

+0

ファイルが存在する場合、$ file-> isValid()を調べることができますが、エラーを見てもファイル自体は要求に含まれていません。 –

+0

@Hans Vn、同じerorrはまだ来ています。私は、jsファイルの成功関数に間違いがあると思いますか? – Mohan

+0

@Mohan、リクエスト(dd(Request :: all());)からダンプとダイを投稿できますか、ダンプ内のファイルの存在を確認できますか? - また、問題をデバッグするのがより簡単になるようにコード例を更新しました。 –

関連する問題