Мой код не загружает URL некоторых больших картинок в базе данных Firebase в реальном времени.Может ли кто-нибудь помочь мне решить эту проблему? - PullRequest
0 голосов
/ 20 июня 2019

Я пытаюсь загрузить несколько изображений в хранилище Firebase, затем я сохранил URL-адреса загрузки изображений в базе данных реального времени Firebase. Я сталкиваюсь с проблемой, когда размер изображения составляет около 15 МБ. Проблема в том, что база данных не хранит URL больших изображений.

В настоящее время я загружаю изображения в виде массива байтов. Я использую формат изображения JPEG после сжатия.

private void uploadFile() {

    int j;



        for (j = 0; j < mGallery.getChildCount(); j++) {

            StorageReference storageReference = mStorageRef.child(System.currentTimeMillis() + j + ".jpg");
            mUploadTask = storageReference.putBytes(uploadImageBytes[j]);

            final int Finalj = j;
            mUploadTask.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                    Task<Uri> urlTask = taskSnapshot.getStorage().getDownloadUrl();
                    while (!urlTask.isSuccessful()) ;
                    Uri downloadUri = urlTask.getResult();
                    String download_url = String.valueOf(downloadUri);
                    Log.e(TAG, "onSuccess: " + Finalj + " " + download_url);
                    setDownloadUrlArray(download_url, Finalj);
                    Toast.makeText(CameraAndPrizeFrag.this, "Upload Successful", Toast.LENGTH_SHORT).show();
                    uploadDelay(Finalj);
                }


            });

} }

private void uploadDelay(int j) {

    String[] tempUrls = getDownloadUrlArray();

    Log.e(TAG, "uploadDelay: 1" + tempUrls[0] + tempUrls[1]);
    Log.e(TAG, "uploadDelay: " + currentUser);
    Toast.makeText(this, "Upload done temp", Toast.LENGTH_SHORT).show();
    if (j == (mGallery.getChildCount() - 1) ) {
        int price = Integer.parseInt(mPrizeInfo.getText().toString());
        Intent i = getIntent();
        nameOfBook = i.getStringExtra("ItemName");
        author = i.getStringExtra("ItemAuthor");
        publication = i.getStringExtra("ItemPublication");
        descriptionOfBook = i.getStringExtra("ItemDescription");
        UploadData uploadData = new UploadData(currentUser, nameOfBook.trim(), tempUrls, price, author, publication, descriptionOfBook);

        String uploadId = mDataRef.push().getKey();

        mDataRef.child(uploadId).setValue(uploadData);
        Toast.makeText(this, "Upload done", Toast.LENGTH_SHORT).show();
    }


}
...