File Upload Using AngularJS with php server script

前端 未结 1 653
孤街浪徒
孤街浪徒 2020-12-14 04:17

I have reviewed the questions and answers on this topic and I dont think they fully answer my issues which are:

  • the upload using the angular frontend (which

1条回答
  •  眼角桃花
    2020-12-14 04:46

    You can use FormData objects to send form data to your server.It will allow you to send both files and text data at the same time. You can find more information about it here.

    index.html

    
        


    In app.js, we create a custom directive fileModel, in which we listen for changes to the content of the input element and change the value of the variable in the scope accordingly. This is achieved using the $parse service to set the value in our scope.

    app.js

    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]);
                });
            });
        }
       };
    }]);
    
    // We can write our own fileUpload service to reuse it in the controller
    myApp.service('fileUpload', ['$http', function ($http) {
        this.uploadFileToUrl = function(file, uploadUrl, name){
             var fd = new FormData();
             fd.append('file', file);
             fd.append('name', name);
             $http.post(uploadUrl, fd, {
                 transformRequest: angular.identity,
                 headers: {'Content-Type': undefined,'Process-Data': false}
             })
             .success(function(){
                console.log("Success");
             })
             .error(function(){
                console.log("Success");
             });
         }
     }]);
    
     myApp.controller('myCtrl', ['$scope', 'fileUpload', function($scope, fileUpload){
    
       $scope.uploadFile = function(){
            var file = $scope.myFile;
            console.log('file is ' );
            console.dir(file);
    
            var uploadUrl = "save_form.php";
            var text = $scope.name;
            fileUpload.uploadFileToUrl(file, uploadUrl, text);
       };
    
    }]);
    

    save_form.php

     connect_error) {
            die("Connection failed: " . $conn->connect_error);
         }
    
         $sql = "INSERT INTO MyData (name,filename) VALUES ('".$name."','".basename($_FILES["file"]["name"])."')";
    
         if ($conn->query($sql) === TRUE) {
             echo json_encode($_FILES["file"]); // new file uploaded
         } else {
            echo "Error: " . $sql . "
    " . $conn->error; } $conn->close(); ?>


    0 讨论(0)
提交回复
热议问题