2017-04-30 1 views
1

J'ai un petit problème avec le code.Importer une image via ajax dans Laravel 5

Je ne peux pas recevoir d'image d'entrée dans mon contrôleur. Ensuite, j'utilise print_r($input); Je reçois un tableau vide.

Code js My:

$(document).on('click', '#photo-upload #upload-button', function(e) { 
    e.preventDefault(); 

    $.ajax({ 

     url: "/photo/upload/", 
     data: new FormData($("#photo-upload")[0]), 
     dataType:'json', 
     type:'GET', 
     processData: false, 
     contentType: false, 

     success: function (data) { 

      alert("succes!"); 
     }, 

     error: function (data) { 

      alert("error"); 

     } 
    }); 
}); 

ma forme:

  <div class="full-cell"> 

       <span>Название</span> 
      </div> 

      <div class="full-cell"> 
       <input type="text" name="name" class="input-full" id="name"> 
      </div> 

      <div class="full-cell"> 

       <span>Описание</span> 
      </div> 

      <div class="full-cell"> 
       <textarea name="description" id="description" cols="30" rows="3"></textarea> 
      </div> 

      <div class="full-cell"> 

       <span>Загрузить в альбом:</span> 

       <select name="album" id="album"> 

        @foreach ($albums as $album) 
         @include('partials.select._album_names') 
        @endforeach 
       </select> 
      </div> 

      <div class="file"> 

       <input type="file" name="image" id="fileInput"/> 
      </div> 

      <div class="window-footer"> 

       <button type="button" class="auth-button btn-sec" id="upload-cancel">Отмена</button> 
       <button type="submit" class="auth-button btn-advanced" id="upload-button" hidden="">Загрузить</button> 
      </div> 
     </form> 

Mon contrôleur:

public function store(Request $request) { 

    $user = Auth::user();               //Данные учетной записи 
    $input = Input::all(); 
    $image = Input::file('image');             //Записываем картинку в переменную 

    print_r($input); 

    $filename = $user->username . '.' . $image->getClientOriginalExtension();  //Создаем новое имя файла 

    $date = date('Y-m-d');               //Получаем дату 
    $path = "user_data/photos/$date/";            //Создаем путь до оригинала 
    $thumbnail_path = "user_data/photos/$date/thumbnail/";       //Создаем путь до миниатюры 

    File::makeDirectory("$path", 0775, true, true);         //Директория для фото 
    File::makeDirectory("$thumbnail_path", 0775, true, true);      //Директория для миниатюры 

    $image->move($path, $filename);             //Сохраняем картинку на сервер 


    $photo = "$path" . $filename;             //Адрес фото 
    $thumbnail = "$thumbnail_path" . $filename;          //Адрес миниатюры 

    File::copy($photo, $thumbnail);             //копируюм фото в миниатюры 

    $image = Image::make($thumbnail)->fit(153,90)->save(); 

    $new_photo = new Photo; 

    $new_photo->owner_id = $user->id; 
    $new_photo->name  = $input['name']; 
    $new_photo->description = $input['description']; 
    $new_photo->photo  = "/$photo"; 
    $new_photo->thumbnail = "/$thumbnail"; 
    $new_photo->album_id = $input['album']; 

    $new_photo->save(); 

} 

Répondre

-1

Essayez d'utiliser la demande à la place.

$request->all() 
0

Ajax Code

var formData = new FormData(); 
      formData.append("file",$('#fileForm16')[0].files[0]); 
      formData.append("password",$("#textPassword").val()); 

    $.ajax({ 
        url: "{{url("api/uploadfiles")}}", 
        data: formData, 
        type: 'POST', 
        headers: { 
         'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
        }, 
        contentType: false, // NEEDED, DON'T OMIT THIS (requires jQuery 1.6+) 
        processData: false, // NEEDED, DON'T OMIT THIS 
        // ... Other options like success and etc 

        success: function (response) { 
         console.log(response); 


        } 
       }); 

Laravel code

if (($request->hasFile('file'))) { 
      $destinationPath = 'uploads/files'; // upload path 
      $extension = $request->file('file')->getClientOriginalExtension(); // getting image extension 

      $tempName = $request->file("file")->getClientOriginalName(); 
      $fileName = uniqid("MW") . '.' . $extension; // renameing image 
      $request->file('file')->move($destinationPath, $fileName); // uploading file to given path 
      // sending back with message 
      $imagepath = $destinationPath.'/'.$fileName; 


     } 
0

i trouvé une solution de ce problème! J'ai besoin d'utiliser diferent même sur mon bouton de téléchargement. J'ai utilisé cet événement: $ (document) .on ('clic', '# photo-upload # upload-button', fonction (e) - et ceci ne fonctionne pas! maintenant j'utilise cet événement: $ (document) .on ('soumettre', '# photo-upload', fonction (e) et le code fonctionne bien !!! merci pour tout le monde, espérons que cela aidera n'importe qui)