2013-08-31 14 views

Odpowiedz

8

Użytkownik chciałby zakodować obraz jako podstawowy ciąg 64 i zapisać go w pamięci lokalnej.

Aby uzyskać przykład konwersji obrazu na ciąg podstawowy 64, zobacz artykuł this answer. toDataURL() zwraca ciąg znaków, który można następnie zapisać w taki sam sposób, w jaki normalnie przechowywany jest ciąg znaków w obiekcie JSON.

Aby wyświetlić obraz, należy użyć coś takiego:

<img src="data:image/jpeg;base64,blahblahblah"></img> 

gdzie blahblahblah jest ciąg zwrócony.

+0

Przede wszystkim dzięki. Ale czy w ten sposób byłbym w stanie zapisać ten obraz w obiekcie Json? Zasadniczo, jak mogę odczytać zawartość obrazu? –

+0

@AdityaSethi Rozszerzyłem moją odpowiedź, aby pokryć to –

+0

Dzięki Matthew :) To zadziałało dla mnie –

1

Obserwuj poniżej kodu do wysyłania i zapisywania obrazów przy użyciu angularjs

Tworzenie index.php pliku i zainicjować aplikację i stworzyć kontroler angularjs.

<!DOCTYPE html> 
<html> 
    <head> 
     <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script> 
     <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.10/angular-route.min.js"></script> 
     <script src="app.js"></script> 
    </head> 
    <body ng-app="myApp" ng-controller="myCtrl"> 
     <div> 
      <input type="file" file-model="myFile"/> 
      <button ng-click="uploadFile()">upload me</button> 
     </div> 
    </body> 
</html> 

Po tym, Tworzenie app.js i napisać kod na przesyłanie obrazu za pomocą angularjs.

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 = new FormData(); 
     fd.append('file', file); 
     $http.post(uploadUrl, fd, { 
      transformRequest: angular.identity, 
      headers: {'Content-Type': undefined} 
     }) 
     .success(function(){ 
     }) 
     .error(function(){ 
     }); 
    } 
}]); 

myApp.controller('myCtrl', ['$scope', 'fileUpload', function($scope, fileUpload){ 

    $scope.uploadFile = function(){ 
     var file = $scope.myFile; 
     console.log('file is ' + JSON.stringify(file)); 
     var uploadUrl = "post.php"; 
     fileUpload.uploadFileToUrl(file, uploadUrl); 
    }; 

}]); 

Po tym, Tworzenie post.php plik do przesłania pliku do przechowywania.

<?php $upload_dir = "images/"; 
if(isset($_FILES["file"]["type"])) 
{ 
    $validextensions = array("jpeg", "jpg", "png", "gif"); 
    $temporary = explode(".", $_FILES["file"]["name"]); 
    $file_extension = end($temporary); 
    if ((($_FILES["file"]["type"] == "image/png") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg")) && in_array($file_extension, $validextensions)) { 
     if ($_FILES["file"]["error"] > 0){ 
      echo "Return Code: " . $_FILES["file"]["error"] . "<br/><br/>"; 
     } else { 
      if (file_exists($upload_dir.$_FILES["file"]["name"])) {     
       echo 'File already exist'; 
      } else { 
       $sourcePath = $_FILES['file']['tmp_name']; // Storing source path of the file in a variable 
       $filename = rand().$_FILES['file']['name']; 
       $targetPath = $upload_dir.$filename; // Target path where file is to be stored 
       move_uploaded_file($sourcePath,$targetPath) ; // Moving Uploaded file 
       echo 'success'; 
      } 
     } 
    } 
} ?> 

Tworzenie obrazów folderu. Mam nadzieję, że to ci pomoże. Dla odniesienia: http://jsfiddle.net/JeJenny/ZG9re/

Powiązane problemy