Android 使用Firebase上载照片时出现的问题
我无法通过firebase上传图像。 代码如下:Android 使用Firebase上载照片时出现的问题,android,firebase,firebase-storage,Android,Firebase,Firebase Storage,我无法通过firebase上传图像。 代码如下: //... //Storage mFirebaseStorage = FirebaseStorage.getInstance(); mUserphotos = mFirebaseStorage.getReference().child("user/@userID"); mTestphotos = mFirebaseStorage.getReference().child("user/testPhotos"); //
//...
//Storage
mFirebaseStorage = FirebaseStorage.getInstance();
mUserphotos = mFirebaseStorage.getReference().child("user/@userID");
mTestphotos = mFirebaseStorage.getReference().child("user/testPhotos");
//...
public void uploadImage(Uri uri) {
Uri file = Uri.fromFile(new File("user/testPicture"));
StorageReference testPath = mTestphotos.child("images/"+file.getLastPathSegment());
UploadTask uploadTask = testPath.putFile(file);
// Register observers to listen for when the download is done or if it fails
uploadTask.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Handle unsuccessful uploads
Toast.makeText(MainActivity.this, "failure", Toast.LENGTH_SHORT).show();
}
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
// taskSnapshot.getMetadata() contains file metadata such as size, content-type, and download URL.
Uri downloadUrl = taskSnapshot.getDownloadUrl();
Toast.makeText(MainActivity.this, "It worked", Toast.LENGTH_SHORT).show();
}
});
//...
/。。。
//储藏
mFirebaseStorage=FirebaseStorage.getInstance();
mUserphotos=mFirebaseStorage.getReference().child(“user/@userID”);
mTestphotos=mFirebaseStorage.getReference().child(“用户/testPhotos”);
//...
公共无效上载映像(Uri){
urifile=Uri.fromFile(新文件(“用户/testPicture”);
StorageReference testPath=mTestphotos.child(“images/”+file.getLastPathSegment());
UploadTask UploadTask=testPath.putFile(文件);
//注册观察员,以便在下载完成时或下载失败时监听
uploadTask.addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常){
//处理不成功的上传
Toast.makeText(MainActivity.this,“failure”,Toast.LENGTH_SHORT.show();
}
}).addOnSuccessListener(新的OnSuccessListener(){
@凌驾
成功时公共无效(UploadTask.TaskSnapshot TaskSnapshot){
//taskSnapshot.getMetadata()包含文件元数据,如大小、内容类型和下载URL。
Uri downloadUrl=taskSnapshot.getDownloadUrl();
Toast.makeText(MainActivity.this,“它起作用了”,Toast.LENGTH_SHORT.show();
}
});
//...
为了节省时间,是的,我确信uri获得了正确的照片。上传的图像还有更多内容//获取存储引用
//getting the storage reference
// filePath is Uri
// "uploads/" is STORAGE_PATH_UPLOADS
StorageReference sRef = storageReference.child("uploads/" + System.currentTimeMillis() + "." + getFileExtension(filePath));
//adding the file to reference
sRef.putFile(filePath)
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
//displaying success toast
Toast.makeText(getApplicationContext(), "File Uploaded ", Toast.LENGTH_LONG).show();
//creating the upload object to store uploaded image details
Upload upload = new Upload(editTextName.getText().toString().trim(), taskSnapshot.getDownloadUrl().toString());
//adding an upload to firebase database
String uploadId = mDatabase.push().getKey();
mDatabase.child(uploadId).setValue(upload);
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
progressDialog.dismiss();
Toast.makeText(getApplicationContext(), exception.getMessage(), Toast.LENGTH_LONG).show();
}
})
.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
@Override
public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
//displaying the upload progress
double progress = (100.0 * taskSnapshot.getBytesTransferred()) / taskSnapshot.getTotalByteCount();
progressDialog.setMessage("Uploaded " + ((int) progress) + "%...");
}
});
//文件路径是Uri
//“uploads/”是存储路径上传
StorageReference sRef=StorageReference.child(“uploads/”+System.currentTimeMillis()+”+getFileExtension(filePath));
//将文件添加到引用
sRef.putFile(文件路径)
.addOnSuccessListener(新的OnSuccessListener(){
@凌驾
成功时公共无效(UploadTask.TaskSnapshot TaskSnapshot){
//展示成功祝酒词
Toast.makeText(getApplicationContext(),“上传文件”,Toast.LENGTH_LONG.show();
//创建上载对象以存储上载的图像详细信息
Upload Upload=新上载(editTextName.getText().toString().trim(),taskSnapshot.getDownloadUrl().toString());
//向firebase数据库添加上载
字符串uploadId=mDatabase.push().getKey();
mDatabase.child(uploadId).setValue(upload);
}
})
.addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常){
progressDialog.disclose();
Toast.makeText(getApplicationContext(),exception.getMessage(),Toast.LENGTH_LONG.show();
}
})
.addOnProgressListener(新的OnProgressListener(){
@凌驾
public void onProgress(UploadTask.TaskSnapshot TaskSnapshot){
//显示上载进度
双进度=(100.0*taskSnapshot.GetByTestTransferred())/taskSnapshot.getTotalByteCount();
setMessage(“上传的”+((int)进度)+“%…”;
}
});
试试这个
Uri uri = data.getData() ;// your image uri
StorageReference imagePathReference = StorageRef.child("Your path");
Bitmap bmp = null;
try {
bmp = MediaStore.Images.Media.getBitmap(getContentResolver(), data.getData());
} catch (IOException e) {
e.printStackTrace();
}
// convert bitmap to byte array to save image in firebase storage
ByteArrayOutputStream bos = new ByteArrayOutputStream();
if (bmp != null) {
bmp.compress(Bitmap.CompressFormat.JPEG, 60, bos);
}
byte[] dataNew = bos.toByteArray();
uploadTask = imagePathReference.putBytes(dataNew);
uploadTask.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
Log.e("firebase ", " addOnFailureListener ");
}
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
// u will et download url here.
}
});
Uri=data.getData();//您的图像Uri
StorageReference imagePathReference=StorageRef.child(“您的路径”);
位图bmp=null;
试一试{
bmp=MediaStore.Images.Media.getBitmap(getContentResolver(),data.getData());
}捕获(IOE异常){
e、 printStackTrace();
}
//将位图转换为字节数组以将图像保存在firebase存储器中
ByteArrayOutputStream bos=新建ByteArrayOutputStream();
如果(bmp!=null){
bmp.compress(Bitmap.CompressFormat.JPEG,60,bos);
}
字节[]dataNew=bos.toByteArray();
uploadTask=imagePathReference.putBytes(dataNew);
uploadTask.addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常){
Log.e(“firebase”、“addOnFailureListener”);
}
}).addOnSuccessListener(新的OnSuccessListener(){
@凌驾
成功时公共无效(UploadTask.TaskSnapshot TaskSnapshot){
//你将在这里下载网址。
}
});
private void uploadimage(){
progressbar.setMessage(“上传数据”);
progressbar.setCanceledOnTouchOutside(假);
progressbar.show();
字符串日期戳=新的SimpleDataFormat(“dd-MM-yyyy-HH:MM:ss:SSS”).format(新日期()).toString();
最终StorageReference imagepath=StorageReference.child(“图像”+日期戳);
imagepath.putFile(SelecteImage.addOnSuccessListener)(
新OnSuccessListener(){
@凌驾
成功时公共无效(UploadTask.TaskSnapshot TaskSnapshot){
//Toast.makeText(Dashboard.this,“成功存储图像”,Toast.LENGTH_LONG.show();
getimage=taskSnapshot.getDownloadUrl();
//bmp=((BitmapDrawable)imagepreview.getDrawable()).getBitmap();
Map imagemap=newhashmap();
put(“imageurl”,getimage);
databaseReference.child(Table_Dashboard).push().setValue(imagemap).addOnCompleteListener(新的OnCompleteListener()){
@凌驾
公共空间未完成(@否
private void uploadimage() {
progressbar.setMessage("Uploading Data");
progressbar.setCanceledOnTouchOutside(false);
progressbar.show();
String dateStamp = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss:SSS").format(new Date()).toString();
final StorageReference imagepath = storageReference.child("Image" + dateStamp);
imagepath.putFile(selectedImage).addOnSuccessListener(
new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
//Toast.makeText(Dashboard.this, "Image Stored Succesfully", Toast.LENGTH_LONG).show();
getimage = taskSnapshot.getDownloadUrl();
// bmp = ((BitmapDrawable) imagepreview.getDrawable()).getBitmap();
Map<String,String> imagemap=new <String,String>HashMap();
imagemap.put("imageurl",getimage);
databaseReference.child(Table_Dashboard).push().setValue(imagemap).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
imagepreview.setImageResource(R.mipmap.preview);
progressbar.dismiss();
Toast.makeText(Dashboard.this, "Image Uploaded Succesfully", Toast.LENGTH_LONG).show();
}
}
});
}
});
}