2013-08-31 4 views
6

Я хочу, чтобы на моей странице была кнопка, откуда я могу загрузить изображение из локальной системы, а затем я хочу сохранить это изображение в своем локальном хранилище.Загрузить изображение и сохранить в локальном хранилище с помощью angularjs

Я учусь учить углы здесь.

ответ

8

Вы хотите закодировать изображение в виде базовой строки 64 и сохранить его в локальном хранилище.

См. this answer для примера того, как преобразовать изображение в базовую 64 строку. toDataURL() возвращает строку, которую вы можете сохранить таким же образом, как обычно, вы сохраняете строку в объекте JSON.

Чтобы отобразить изображение, можно использовать что-то вроде этого:

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

где blahblahblah является строка, возвращенное.

+0

Прежде всего спасибо. Но выполнив это, я смогу сохранить это изображение в объекте json? В основном, как я могу прочитать содержимое изображения? –

+0

@AdityaSethi Разработал мой ответ, чтобы накрыть это –

+0

Спасибо Matthew :) Это сработало для меня –

1

Следуйте ниже код для загрузки и сохранения изображений с помощью AngularJS

Создать index.php файл и инициализировать приложение и создать контроллер 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> 

После этого Создать app.js и написать код для загрузки изображения с помощью 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); 
    }; 

}]); 

После этого Создать Post.php файл для загрузки файла в хранилище.

<?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'; 
      } 
     } 
    } 
} ?> 

Создание изображений папки. Надеюсь, это вам поможет. Для справки: http://jsfiddle.net/JeJenny/ZG9re/

Смежные вопросы