2017-02-13 14 views
0

Я не понимаю, как я могу отправить службу формы файла в контроллер laravel и сохранить ее в папке.Как сохранить файл в папке с помощью службы AngularJS и Laravel Controller

Здесь вид и контроллер (Angularjs передний конец) Просмотр

<html> 

<head> 
    <script src = "https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script> 
</head> 

    <body ng-app = "myApp"> 

    <div ng-controller = "myCtrl"> 
    <form enctype="multipart/form-data"> 
    <input type = "file" file-model = "myFile"/> 
    <button ng-click = "uploadFile()">upload me</button> 
    </form> 
    </div> 

** controller** 
    <script> 
    var myApp = angular.module('myApp', []); 

    myApp.directive('fileModel', ['$parse', function ($parse) { 
     return { 
      restrict: 'A', 
      link: function(scope, element, attrs) { 
       var model = $parse(attrs.fileModel); 
       var modelSetter = model.assign; 

       element.bind('change', function(){ 
       scope.$apply(function(){ 
        modelSetter(scope, element[0].files[0]); 
       }); 
       }); 
      } 
     }; 
    }]); 

    myApp.service('fileUpload', ['$http', function ($http) { 
     this.uploadFileToUrl = function(file, uploadUrl){ 
      var fd = {'file' : file} 
      var file = { 
      'file' : file 
      } 
      console.log(uploadUrl, fd) 
      $http.post("http://myipaddress/practice/upload/blog/public/index.php/uploadavtar",uploadUrl, fd) 
      .then(function(response) { 
      console.log(response.data) 
      }); 
     } 
    }]); 

    myApp.controller('myCtrl', ['$scope', 'fileUpload', function($scope, fileUpload){ 
     $scope.uploadFile = function(){ 
      var file = $scope.myFile; 

      console.log('file is '); 
      console.dir(file); 

      var uploadUrl = "/fileUpload"; 
      fileUpload.uploadFileToUrl(file, uploadUrl); 
     }; 
    }]); 

    </script> 

Laravel Контроллер

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 

use App\Http\Requests; 
use Illuminate\Support\Facades\Input; 

class UsersController extends Controller 
{ 
public function uploadavtar(Request $request){ 


    $extension = Input::file('file')->getClientOriginalExtension(); 
    $filename = rand(11111111, 99999999). '.' . $extension; 
    Input::file('file')->move(
     '192.168.2.68/practice/upload/public/files/uploads/', $filename 
    ); 

     $fullPath = 'myipaddress/practice/upload' . $filename; 

    return $fullPath ; 

} 
} 

Я checcked вышеуказанный контроллер larave через почтальона его работая только в том, что он не хранит файл. И если я делаю то же самое с кнопки отправки, то отображается ее ошибка

'Call to a member function getClientOriginalExtension() on a non-object 
' 

Как решить эту проблему. 1. Отправка службы формы файла в контроллер laravel 2. сохранение в определенном пути.

ответ

1

Я думаю, что ошибка о том, что нет файла в запросе (POST)

if($request->hasFile('file')) 
    { 
     $extension = Input::file('file')->getClientOriginalExtension(); 
     $filename = rand(11111111, 99999999). '.' . $extension; 
     Input::file('file')->move('192.168.2.68/practice/upload/public/files/uploads/', $filename); 
     $fullPath = 'myipaddress/practice/upload' . $filename; 

     return $fullPath ; 
    } 
    else 
    { 
     //file from post does not exist 
    } 

EDIT

Вы получили Счетчик неправильно в вашем AJAX

myApp.service('fileUpload', ['$http', function ($http) { 
     this.uploadFileToUrl = function(file, uploadUrl){ 
      var fd = new FormData(); 
      fd.append('file', file); 

      $http.post("http://myipaddress/practice/upload/blog/public/index.php/uploadavtar", fd, { 
      transformRequest: angular.identity, 
      headers: {'Content-Type': undefined,'Process-Data': false} 
     }) 
     .success(function(response){ 
      console.log(response.data); 
     }) 
     .error(function(){ 
      console.log("error"); 
     }); 
     } 
    }]); 

первый В параметре для ссылки, вторая - данные формы, а последними являются настройки

+0

Но теперь я не получаю h ow я могу отправить файл из запроса angularhs $ http в контроллер laravel. Функция COntroller работает нормально. Я проверяю postmant. @lukegkennjordan – Mohammed

+0

Что такое uploadurl? @lukeglennjordan – Mohammed