【发布时间】:2018-09-08 01:11:11
【问题描述】:
所以我实际上是在使用这两种方法来将图像保存到 firebase,它使用 相机图像 以及 从图库中选择图像 .
当我从图库中选择图像时,然后单击按钮保存,我可以立即保存它。但是当我单击相机按钮然后单击按钮保存时,该按钮不起作用。意思是我没有在里面放任何代码。
这是上传图片的方法:
private void uploadImage () {
if (filePath != null) {
final ProgressDialog progressDialog = new ProgressDialog(this);
progressDialog.setTitle("Uploading..");
progressDialog.show();
StorageReference ref = storageReference.child("winepic/" + UUID.randomUUID().toString());
ref.putFile(filePath)
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
String name = inputName.getText().toString().trim();
String type = inputType.getText().toString().trim();
String price = inputPrice.getText().toString().trim();
String description = inputDescription.getText().toString().trim();
if (!TextUtils.isEmpty(name)) {
String id = databaseWine.push().getKey();
Wine wine = new Wine(id, name, type, price, description, taskSnapshot.getDownloadUrl().toString());
databaseWine.child(id).setValue(wine);
//Toast.makeText(AddWine.this, "Added", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(AddWine.this, "You should enter name", Toast.LENGTH_SHORT).show();
}
progressDialog.dismiss();
Toast.makeText(AddWine.this, "Uploaded", Toast.LENGTH_SHORT).show();
Intent i = new Intent(AddWine.this, ListWine.class);
startActivity(i);
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
progressDialog.dismiss();
Toast.makeText(AddWine.this, "Failed " + e.getMessage(), Toast.LENGTH_SHORT).show();
}
})
.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
@Override
public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
double progress = (100.0*taskSnapshot.getBytesTransferred()/taskSnapshot.getTotalByteCount());
progressDialog.setMessage("Uploaded "+(int)progress+"%");
}
});
}
}
这是 OnActivityResult 的代码:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK){
if(requestCode == CAPTURE_IMAGE_REQUEST) {
Bundle bundle = data.getExtras();
final Bitmap bmp = (Bitmap) bundle.get("data");
imageView.setImageBitmap(bmp);
}else if(requestCode == PICK_IMAGE_REQUEST){
filePath = data.getData();
try {
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), filePath);
imageView.setImageBitmap(bitmap);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
希望你们能帮我解决这个问题。
【问题讨论】:
-
if (filePath != null) {。如果只使用相机,则没有文件路径。 -
那么,我如何将它保存到 Firebase?该 filePath 用于从图库中选择图像。我使用两种方法从相机捕获图像并从图库中选择图像
-
是的,我知道您使用两种方法。很清楚。但是,如果您使用相机,则没有代码可以上传内容。那么在 uploadImage() 中根本没有代码。你也说过了。
-
那你在用完相机后想上传什么?你还没有告诉我们。
-
我要上传抓拍的图片(用户界面可以点击上面的链接)
标签: javascript android firebase firebase-realtime-database