从firebase获取名称

时间:2019-02-10 23:26:25

标签: android firebase firebase-storage

如果我手动输入图像的位置,今天终于可以在今天早些时候在屏幕上显示并更新图像。我想知道是否有系统地执行此操作?因此,所有图像都不都是相同的图片。我希望他们能够在自己的设备上上传它们,因此使用一个随机名称上传它们。但是我不确定如何保存这些名称以将其下载回应用程序。我觉得好像一系列的数组可以用于存储用户ID和发布ID。但是我希望有一个火力地堡方法来做到这一点。

我尝试将随机名称保存在字符串中,但是它再次始终如一地下载相同的图片。我尝试使用.getDownloadUri()。toString()方法,但是使用这些方法时,很难将其显示在带有图片的屏幕上。

 public void setBlogImage(String downloadUri, String thumbUri){


            profileImageReference = FirebaseStorage.getInstance().getReference("post_images");
            profileImageReference = profileImageReference.child("8c760627-1660-4977-83f2-838d23bedd28.jpg");
            blogImageView = mView.findViewById(R.id.blog_image);

            GlideApp.with(context).load(profileImageReference).into(blogImageView);
        }

 UploadTask filePath = storageReference.child("post_images").child(randomName + ".jpg").putBytes(imageData);
                    filePath.addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
                        @Override
                        public void onComplete(@NonNull final Task<UploadTask.TaskSnapshot> task) {

                            final String downloadUri = task.getResult().getMetadata().getReference().getDownloadUrl().toString();

                            if(task.isSuccessful()){

                                File newThumbFile = new File(postImageUri.getPath());
                                try {

                                    compressedImageFile = new Compressor(NewPostActivity.this)
                                            .setMaxHeight(100)
                                            .setMaxWidth(100)
                                            .setQuality(1)
                                            .compressToBitmap(newThumbFile);

                                } catch (IOException e) {
                                    e.printStackTrace();
                                }

                                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                                compressedImageFile.compress(Bitmap.CompressFormat.JPEG, 100, baos);
                                byte[] thumbData = baos.toByteArray();

                                UploadTask uploadTask = storageReference.child("post_images/thumbs")
                                        .child(randomName + ".jpg").putBytes(thumbData);

                                uploadTask.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                                    @Override
                                    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

                                        Task<Uri> uriTask = task.getResult().getStorage().getDownloadUrl().addOnCompleteListener(new OnCompleteListener<Uri>() {
                                            @Override
                                            public void onComplete(@NonNull Task<Uri> task) {
                                                String downloadUri = storageReference.getDownloadUrl().toString();
                                            }
                                        });



                                        Map<String, Object> postMap = new HashMap<>();
                                        postMap.put("image_url", downloadUri);
                                        postMap.put("image_thumb", downloadUrl);
                                        postMap.put("desc", desc);
                                        postMap.put("user_id", current_user_id);
                                        postMap.put("timestamp", FieldValue.serverTimestamp());

                                        firebaseFirestore.collection("Posts").add(postMap).addOnCompleteListener(new OnCompleteListener<DocumentReference>() {
                                            @Override
                                            public void onComplete(@NonNull Task<DocumentReference> task) {

                                                if(task.isSuccessful()){

                                                    Toast.makeText(NewPostActivity.this, "Post was added", Toast.LENGTH_LONG).show();
                                                    Intent mainIntent = new Intent(NewPostActivity.this, MainActivity.class);
                                                    startActivity(mainIntent);
                                                    finish();

                                                } else {


                                                }

                                                newPostProgress.setVisibility(View.INVISIBLE);

                                            }
                                        });

我期望它传递downloadUrl字符串,但是当我这样做时,我得到一个空白的imageView,并且我尝试将子级设置为downloadUri字符串,而不是当前那里的手册。

0 个答案:

没有答案