2017-05-09 51 views
1

我掙扎如何處理發送通過AJAX到控制器,並把它們放到存儲多張圖片。我讀過,我應該使新的FormData對象,我做到了。如何在PHP服務器端處理多個文件的javascript formdata?

讓我們看看我的代碼:

HTML:

<form enctype="multipart/form-data" id="formularz"> 
      <label class="btn btn-sm btn-success" for="files"> 
      <input id="files" type="file" name="zdjęcie[]" multiple style="display:none;" onchange="$('#upload-file-info').html($(this).val());"> 
      <i class="fa fa-plus-circle" aria-hidden="true"></i> Dodaj zdjęcia 
      <input type="hidden" name="_token" value="{{Session::token()}}"> 
      </label> 
      <label class="btn btn-sm btn-danger deleteImages"> 
      <i class="fa fa-times-circle" aria-hidden="true"></i> Wyczyść 
      </label> 
      <br> 
      <div class="chosenImages"> 
      <output id="list"></output> 
      </div> 
</form> 

JS:

var formData = new FormData($('#formularz')[0]); 

     $.ajax({ 
     method:"POST", 
     url:postAddNews, 
     data: { 
      formData:formData, 
      _token:token 
     }, 
     cache:false, 
     contentType: false, 
     processData: false, 
     success:function(data){ 
      console.log("success"); 
      console.log(data); 
     }, 
     error: function(data){ 
      console.log("error"); 
      console.log(data); 
     } 
    }); 

在服務器端我會那樣做(不通過AJAX發送):

$files = $request->file('zdjęcie'); 

$i = 1; 
$filename = array(); 

foreach($files as $file) { 
     Storage::disk('local')->put('newsimages/'.$i.'.'.$file->extension(), file_get_contents($file)); 
     $i++; 
} 

當我檢查在FORMDATA對象,我只能看到這一點:

Inspecting element

回答

1

首先,你必須改變:

var formData = new FormData($('#formularz')[0]); 

的只是添加一個文件FORMDATA上面的代碼,但multiple屬性也在那裏。所以,你必須要追加的所有文件中像FORMDATA:

var frmData = new FormData(); 
$.each($('#formularz_images')[0].files, function(i, file) { 
    frmData.append('formularz[]', file); 
}); 

,你可以讓他們在控制,如:

$data = Input::all(); 

這裏$數據包含formularz指數在裏面,它包含所有圖片在裏面。使用foreach()獲得單獨的圖像,如:

foreach($data['formularz'] as $image) 
{ 

} 
+0

我已經試過您的解決方案,它看上去不錯,但是當我試圖訪問'$(「#formularz」)[0] .files'出現問題。 –

+0

好的。我找到了解決問題的方法。感謝您的解決方案。 –

+0

我希望這對你有所幫助 –

相關問題