【问题标题】:Cannot fetch photo from database using restful api无法使用 restful api 从数据库中获取照片
【发布时间】:2018-04-16 05:53:37
【问题描述】:

我正在尝试获取存储在数据库中的特定用户 ID 的照片, 我能够从 API 生成响应,如下所示: 但它是在控制器的 getPhotopath() 方法的错误部分中收到的,如下所示: HTML:

<div class="col-md-3 " ng-init="modifyphoto()" >
            <img class="smaller" ng-src="fetchedimg" ng-model="fetchedimg"><br>
          <p>{{userName}}</p>
          <div ng-model="userType">
                 <p>{{userType | UserFilter}}</p>
          </div>
          <div ng-controller="AskController">
                 <button class="btn btn-default" ng-click="gotouserdetails()">View
                       My Details</button>

          </div>
   </div>

控制器:

$scope.modifyphoto = function() {
          $scope.getPhotoPath();
          if($scope.userPhoto==null){
                 $scope.fetchedimg=$scope.defaultimg;
          }
          else{
                 $scope.fetchedimg=$scope.userPhoto;
          }
   };

   $scope.getPhotoPath = function() {

          var obj = JSON.parse($cookies.get('user'));
          $scope.passUserId = obj.userId;
          $http.get(URI + "user/getphoto"+"/"+$scope.passUserId).then(
                       function(response) {      
                              alert("hifrsegfsfgv");
                              alert(response.data.message);

                              $scope.userPhoto=response.data.userPhoto;
                       }, function(response) {
                              alert("hi");
                              alert(response.data);
                              $scope.userPhoto =null;
                              alert("danger"+response.data.userPhoto);
                       });
   };

API:

@Path("getphoto/{an}")
   @GET
   @Consumes(MediaType.APPLICATION_JSON)
   @Produces(MediaType.APPLICATION_JSON)
   public Response getPhoto(@PathParam("an") String userId) throws Exception {
          String returnValue = null;
          Response response = null;
          User user = null;
          try {
                 System.out.println(userId);
                 UserService userService = Factory.createUserService();
                 String photoPath=userService.getPhotoPath(userId);
                 user = new User();
                 user.setUserPhoto(photoPath);
                 System.out.println(photoPath);
                 returnValue = JSONParser.toJson(user);
                 System.out.println(returnValue);
                 response = Response.status(Status.OK).entity(returnValue).build();
          } catch (Exception e) {
                 String errorMessage = AppConfig.PROPERTIES.getProperty(e.getMessage());
                 User user1 = new User();
                 user1.setMessage(errorMessage);
                 String returnString = JSONParser.toJson(user1);
                 response = Response.status(Status.SERVICE_UNAVAILABLE).entity(returnString).build();
          }
          return response;
   }

我不明白后端的状态是否正常,那么为什么会在错误部分收到它?

【问题讨论】:

  • @Produces(MediaType.APPLICATION_JSON) 您的照片以 JSON 格式返回,这就是您收到“无效令牌”错误的原因

标签: angularjs post web-applications get restful-url


【解决方案1】:

尝试以 base64 格式返回您的图像以避免 JSON 解析错误。并将该图像绑定到 img 标签

【讨论】:

  • 怎么做?
  • 我只从数据库中获取路径图像存储在本地文件夹中..我需要在控制器中接收路径字符串..
  • 您可以将上传的图像从字节转换为 base 64 字符串并将其作为字符串存储在数据库中并在不进行任何解析的情况下检索它,或者您可以将二进制数据转换为 base 64 字符串,例如 var testData = 新字节 [] { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07}; var inputStream = new MemoryStream(testData); var inputAsString = Convert.ToBase64String(inputStream.ToArray());
  • 如果您只是从数据库中获取路径,请确保您的路径是绝对路径,即它应该指向具有本地图像文件的应用程序文件夹。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多