ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Android-将视频/音频文件上传到Firebase存储

2019-10-25 14:37:30  阅读:241  来源: 互联网

标签:firebase firebase-storage android


我正在使用Firebase Storage保存视频/音频用户的文件.
我的主要想法是将每个视频/音频保存在用户ID(UID)下.
对每个用户而言,这意味着在其UID下保存了多个视频/音频文件.
我编写了一个代码,问题是他一直将新视频保存在我保存的旧视频上.
请告诉我我错了

   @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK) {
        if (requestCode == PICK_VIDEO_REQUEST) {
            Uri selectedVideoUri = data.getData();
            String userUid = FirebaseAuth.getInstance().getCurrentUser().getUid();
            StorageReference storageRef = FirebaseStorage.getInstance().getReference();
            videoRef = storageRef.child("/videos/" + userUid );
            //TODO: save the video in the db
            uploadData(selectedVideoUri);
        }else if(requestCode == PICK_AUDIO_REQUEST){
            //TODO: save the audio in the db
        }
    }
}

private void uploadData(Uri videoUri) {
    if(videoUri != null){
        UploadTask uploadTask = videoRef.putFile(videoUri);

        uploadTask.addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
            @Override
            public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
                if(task.isSuccessful())
                    Toast.makeText(getContext(), "Upload Complete", Toast.LENGTH_SHORT).show();
                    progressBarUpload.setVisibility(View.INVISIBLE);
            }
        }).addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
            @Override
            public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
                updateProgress(taskSnapshot);
            }
        });
    }else {
        Toast.makeText(getContext(), "Nothing to upload", Toast.LENGTH_SHORT).show();
    }

}

解决方法:

您每次为该用户的上传使用相同的文件路径:

videoRef = storageRef.child("/videos/" + userUid);

相反,您需要为每次上载提供一些唯一的文件名,并将用户ID视为目录组件,而不是文件本身的名称:

String filename = "you put a unique file name here";
videoRef = storageRef.child("/videos/" + userUid + "/" + filename);

标签:firebase,firebase-storage,android
来源: https://codeday.me/bug/20191025/1929304.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有