2017-02-13 71 views
0

我没有得到如何将文件格式的服务发送到laravel控制器并将其存储在文件夹中。如何使用AngularJS服务和Laravel控制器保存文件夹中的文件

下面是视图和控制器(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 
    } 

编辑

你得到了PARAMATERS错在你的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"); 
     }); 
     } 
    }]); 

第一paramater是为链接,第二是形式数据,最后是设置

+0

但现在我没有得到h我可以将文件从angularhs $ http请求发送到laravel控制器。控制器功能正常工作我通过postmant检查。 @lukegkennjordan – Mohammed

+0

uploadurl有什么用? @lukeglennjordan – Mohammed

相关问题