2016-12-21 3 views
0

У меня есть учетная запись firebase, и я хочу загрузить некоторые фотографии программно в хранилище firebase. Для этого я использую API-интерфейс облачного java-хранилища Google. Я настраиваю разрешение и другие. Я могу успешно создавать ведра, капли. Однако, когда я попытался загрузить изображение, его размер равен 0 или он не может быть загружен (URL-адрес не создается). Код, который я использую, ниже;firebase storage upload from google cloud storage java api

 Storage storage = StorageOptions.newBuilder().setProjectId("firebaseId") 
       .setCredentials(ServiceAccountCredentials.fromStream(new FileInputStream("jsonFileFor Authentication"))) 
       .build() 
       .getService(); 
     String blobName = "a.jpg"; 
     BlobId blobId = BlobId.of(bucket.getName(), blobName); 
     InputStream inputStream = new FileInputStream(new File("a.jpg")); 
     //BlobInfo blobInfo = BlobInfo.builder(blobId).contentType("image/jpeg").build(); 
     BlobInfo blobInfo = BlobInfo.builder(bucket.getName(), "a.jpg").contentType("image/jpeg").build(); 

    try (WriteChannel writer = storage.writer(blobInfo)) { 
     byte[] buffer = new byte[1024]; 
     int limit; 
     try { 
      while ((limit = inputStream.read(buffer)) >= 0) { 
       writer.write(ByteBuffer.wrap(buffer, 0, limit)); 
      } 

     } catch (Exception ex) { 
      // handle exception 
     }finally { 
      writer.close(); 
     } 
    } 

Любые советы приветствуются. С уважением.

ответ

3

Код работает. Проблема связана с разрешением. Вам нужно установить идентификатор владельца хранилища google как владельца ведро хранилища. Затем вы можете записать в ведро хранилища. Я не удаляю сообщение в случае, если кто-то ищет для записи хранилища firebase из java API-интерфейсов Google.

С уважением.

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