即使在遵循 firebase 代码示例后,我的 firebase 数据库中也没有获得图像链接



该链接在存储中保存得很好,但根本不会以任何格式保存在数据库中。

private void StoringImageToFirebaseStorage()
{
Calendar callForDate = Calendar.getInstance();
SimpleDateFormat currentDate = new SimpleDateFormat("dd-MMMM-yyyy");
saveCurrentDate = currentDate.format(callForDate.getTime());
Calendar callForTime = Calendar.getInstance();
SimpleDateFormat currentTime = new SimpleDateFormat("HH:mm:ss");
saveCurrentTime  = currentTime.format(callForTime.getTime());
postRandomName = saveCurrentDate + saveCurrentTime;

final StorageReference filePath = PostsImagesReference.child("Post Images").child(ImageUri.getLastPathSegment() + postRandomName + ".jpg");
filePath.putFile(ImageUri).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
@Override
public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task)
{
if (task.isSuccessful())
{
SendUserToMainActivity();
PostsImagesReference.child("Post Images").getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>()
{
@Override
public void onSuccess(Uri uri)
{

}
}).addOnFailureListener(new OnFailureListener()
{
@Override
public void onFailure(@NonNull Exception exception) {
// Handle any errors
}
});
Toast.makeText(PostActivity.this, "Post Uploaded", Toast.LENGTH_SHORT).show();
loadingBar.dismiss();
StoringTextToFirebaseStorage();
}
else
{
String message = task.getException().getMessage();
Toast.makeText(PostActivity.this, "Error Occurred: " + message, Toast.LENGTH_SHORT).show();
loadingBar.dismiss();
}
}
});
}

这是我的代码,我应该保存链接,我正在使用 https://firebase.google.com/docs/storage/android/download-files#download_data_via_url 的代码

我相信问题可能是postimagesreference还负责为存储中的图像生成随机ID,但我不确定,因为我制作了一个名为postimagesreference 1的引用的副本,但它仍然不起作用。我缺少什么才能正确保存到数据库吗?我应该将代码插入其他位置吗?

如果需要,这是我的整个代码:

公共类 PostActivity 扩展了 AppCompatActivity {

private Toolbar mToolbar;
private ProgressDialog loadingBar;
private ImageButton SelectPostImage;
private Button AddPostButton;
private EditText PostDescription;
private static final int Gallery_Pick = 1;
private Uri ImageUri;
private StorageReference PostsImagesReference;
//private StorageReference PostsImagesReference1;
private DatabaseReference PostsRef;
private FirebaseAuth mAuth;
private String Description;
private String saveCurrentDate;
private String saveCurrentTime;
private String postRandomName;
private String currentUserID;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_post);
mAuth = FirebaseAuth.getInstance();
currentUserID = mAuth.getCurrentUser().getUid();
PostsImagesReference = FirebaseStorage.getInstance().getReference();
//PostsImagesReference1 = FirebaseStorage.getInstance().getReference();

PostsRef = FirebaseDatabase.getInstance().getReference().child("Posts");
SelectPostImage = (ImageButton) findViewById(R.id.select_post_image);
AddPostButton = (Button) findViewById(R.id.add_post);
PostDescription = (EditText) findViewById(R.id.post_description);
loadingBar = new ProgressDialog(this);

mToolbar = (Toolbar) findViewById(R.id.update_post_page_toolbar);
setSupportActionBar(mToolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setTitle("Update Post");

SelectPostImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
OpenGallery();
}
});
AddPostButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
ValidatePostInfo();
}
});
}
private void ValidatePostInfo()
{
Description = PostDescription.getText().toString();
if(ImageUri == null)
{
Toast.makeText(this, "Please select image", Toast.LENGTH_SHORT).show();
}
else if(TextUtils.isEmpty(Description))
{
Toast.makeText(this, "Please say something about your image", Toast.LENGTH_SHORT).show();
}
else
{
loadingBar.setTitle("Post Uploading");
loadingBar.setMessage("Please Wait");
loadingBar.show();
loadingBar.setCanceledOnTouchOutside(true);
StoringImageToFirebaseStorage();
}
}
private void StoringTextToFirebaseStorage()
{
Calendar callForDate = Calendar.getInstance();
SimpleDateFormat currentDate = new SimpleDateFormat("dd-MMMM-yyyy");
saveCurrentDate = currentDate.format(callForDate.getTime());
Calendar callForTime = Calendar.getInstance();
SimpleDateFormat currentTime = new SimpleDateFormat("HH:mm:ss");
saveCurrentTime  = currentTime.format(callForDate.getTime());
postRandomName = saveCurrentDate + saveCurrentTime;

HashMap postsMap = new HashMap();
postsMap.put("uid", currentUserID);
postsMap.put("date", saveCurrentDate);
postsMap.put("time", saveCurrentTime);
postsMap.put("description", Description);
postsMap.put("image", PostsImagesReference);
PostsRef.child(currentUserID + postRandomName).updateChildren(postsMap)
.addOnCompleteListener(new OnCompleteListener()
{
@Override
public void onComplete(@NonNull Task task)
{
if (task.isSuccessful())
{
SendUserToMainActivity();
Toast.makeText(PostActivity.this, "Post Uploaded", Toast.LENGTH_SHORT).show();
loadingBar.dismiss();
}
else
{
String message = task.getException().getMessage();
Toast.makeText(PostActivity.this, "Error Occurred: " + message, Toast.LENGTH_SHORT).show();
loadingBar.dismiss();
}
}
});

}

private void StoringImageToFirebaseStorage()
{
Calendar callForDate = Calendar.getInstance();
SimpleDateFormat currentDate = new SimpleDateFormat("dd-MMMM-yyyy");
saveCurrentDate = currentDate.format(callForDate.getTime());
Calendar callForTime = Calendar.getInstance();
SimpleDateFormat currentTime = new SimpleDateFormat("HH:mm:ss");
saveCurrentTime  = currentTime.format(callForTime.getTime());
postRandomName = saveCurrentDate + saveCurrentTime;

final StorageReference filePath = PostsImagesReference.child("Post Images").child(ImageUri.getLastPathSegment() + postRandomName + ".jpg");
filePath.putFile(ImageUri).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
@Override
public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task)
{
if (task.isSuccessful())
{
SendUserToMainActivity();
PostsImagesReference.child("Post Images").getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>()
{
@Override
public void onSuccess(Uri uri)
{

}
}).addOnFailureListener(new OnFailureListener()
{
@Override
public void onFailure(@NonNull Exception exception) {
// Handle any errors
}
});
Toast.makeText(PostActivity.this, "Post Uploaded", Toast.LENGTH_SHORT).show();
loadingBar.dismiss();
StoringTextToFirebaseStorage();
}
else
{
String message = task.getException().getMessage();
Toast.makeText(PostActivity.this, "Error Occurred: " + message, Toast.LENGTH_SHORT).show();
loadingBar.dismiss();
}
}
});
}


private void OpenGallery()
{
Intent galleryIntent = new Intent();
galleryIntent.setAction(Intent.ACTION_GET_CONTENT);
galleryIntent.setType("image/*");
startActivityForResult(galleryIntent, Gallery_Pick);
}



@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if (requestCode==Gallery_Pick && resultCode==RESULT_OK && data!=null)
{
ImageUri = data.getData();
SelectPostImage.setImageURI(ImageUri);
}
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item)
{
int id = item.getItemId();
if(id == android.R.id.home)
{
SendUserToMainActivity();
}
return super.onOptionsItemSelected(item);
}

private void SendUserToMainActivity()
{
Intent mainIntent = new Intent(PostActivity.this, MainActivity.class);
startActivity(mainIntent);
}

}

我的依赖项:

implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'com.google.android.material:material:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'com.google.firebase:firebase-auth:17.0.0'
implementation 'com.google.firebase:firebase-database:17.0.0'
implementation 'com.google.firebase:firebase-storage:17.0.0'
implementation 'com.squareup.picasso:picasso:2.71828'
testImplementation 'junit:junit:4.12'
implementation 'com.firebaseui:firebase-ui-database:6.2.1'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
implementation 'com.google.firebase:firebase-messaging:20.2.0'
implementation 'com.google.firebase:firebase-firestore:19.0.0'
implementation 'com.android.support:multidex:2.0.1'

@Override
public void onSuccess(Uri uri)
{
String downloadUrl = uri.toString();
DatabaseReference db = FirebaseDatabase.getInstance().getReference();
db.child("users").child("pics").setValue(downloadUrl);
}

uri.toString();将是您的下载网址:)

private void StoringTextToFirebaseStorage(Uri downloadUrl)
{
Calendar callForDate = Calendar.getInstance();
SimpleDateFormat currentDate = new SimpleDateFormat("dd-MMMM-yyyy");
saveCurrentDate = currentDate.format(callForDate.getTime());
Calendar callForTime = Calendar.getInstance();
SimpleDateFormat currentTime = new SimpleDateFormat("HH:mm:ss");
saveCurrentTime  = currentTime.format(callForDate.getTime());
postRandomName = saveCurrentDate + saveCurrentTime;

HashMap postsMap = new HashMap();
postsMap.put("uid", currentUserID);
postsMap.put("date", saveCurrentDate);
postsMap.put("time", saveCurrentTime);
postsMap.put("description", Description);
postsMap.put("image", downloadUrl.toString());
PostsRef.child(currentUserID + postRandomName).updateChildren(postsMap)
.addOnCompleteListener(new OnCompleteListener()
{
@Override
public void onComplete(@NonNull Task task)
{
if (task.isSuccessful())
{
SendUserToMainActivity();
Toast.makeText(PostActivity.this, "Post Uploaded", Toast.LENGTH_SHORT).show();
loadingBar.dismiss();
}
else
{
String message = task.getException().getMessage();
Toast.makeText(PostActivity.this, "Error Occurred: " + message, Toast.LENGTH_SHORT).show();
loadingBar.dismiss();
}
}
});

}

private void StoringImageToFirebaseStorage()
{
Calendar callForDate = Calendar.getInstance();
SimpleDateFormat currentDate = new SimpleDateFormat("dd-MMMM-yyyy");
saveCurrentDate = currentDate.format(callForDate.getTime());
Calendar callForTime = Calendar.getInstance();
SimpleDateFormat currentTime = new SimpleDateFormat("HH:mm:ss");
saveCurrentTime  = currentTime.format(callForTime.getTime());
postRandomName = saveCurrentDate + saveCurrentTime;

final StorageReference filePath = PostsImagesReference.child("Post Images").child(ImageUri.getLastPathSegment() + postRandomName + ".jpg");
filePath.putFile(ImageUri).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
@Override
public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task)
{
if (task.isSuccessful())
{
SendUserToMainActivity();
PostsImagesReference.child("Post Images").getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>()
{
@Override
public void onSuccess(Uri uri)
{
StoringTextToFirebaseStorage(uri);

}
}).addOnFailureListener(new OnFailureListener()
{
@Override
public void onFailure(@NonNull Exception exception) {
// Handle any errors
}
});
Toast.makeText(PostActivity.this, "Post Uploaded", Toast.LENGTH_SHORT).show();
loadingBar.dismiss();

}
else
{
String message = task.getException().getMessage();
Toast.makeText(PostActivity.this, "Error Occurred: " + message, Toast.LENGTH_SHORT).show();
loadingBar.dismiss();
}
}
});
}

最新更新