为了账号安全,请及时绑定邮箱和手机立即绑定

如何将图像下载 URL 从 FireBase 存储发送到 SQLServer 数据库?

如何将图像下载 URL 从 FireBase 存储发送到 SQLServer 数据库?

守着一只汪 2022-10-12 15:25:55
我在将下载 url 发送到 sql server 数据库时遇到问题,即使我获取了 url 并将其设置为 TextView 但它没有显示在数据库中。这是我一直在尝试的代码,并尝试了很多方法但仍然无法正常工作public void Upload() {    if (filePath != null) {        final ProgressDialog progressDialog = new ProgressDialog(getActivity());        progressDialog.setTitle("Uploading");        progressDialog.show();        final StorageReference riversRef = FirebaseStorage.getInstance().getReference().child("BrandImages/" + brandname.getText().toString() + ".jpg");        riversRef.putFile(filePath)                .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {            @Override            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {                progressDialog.dismiss();                Task<Uri> task = taskSnapshot.getMetadata().getReference().getDownloadUrl();                task.addOnSuccessListener(new OnSuccessListener<Uri>() {                    @Override                    public void onSuccess(Uri uri) {                        String generatedFilePath = uri.toString();                        imgpath.setText(generatedFilePath);                    }                });                ConnectDatabase db = new ConnectDatabase();                Connection con = db.ConnectDB();                if (con == null)                    Toast.makeText(getActivity(), "Please check your internet connection!", Toast.LENGTH_LONG).show();                else {                    try {                        Statement sm = con.createStatement();                        int x = sm.executeUpdate("insert into CarBrand values('" + brandname.getText() + "','" + imgpath.getText() + "')");                             }        });现在我得到了 url 并设置为 (imgpath) 这是一个 TextView 但问题是当它插入数据库时它显示 TextView 的默认值而不是下载 URL
查看完整描述

1 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

尝试将您的 sql db 方法放在侦听器中(我不知道您的代码的上下文,但这可能不起作用,因为 firebase 方法是异步的)。


现在您确定您的方法将在您获得 URL 后立即执行。


像这样 :


Task<Uri> task = taskSnapshot.getMetadata().getReference().getDownloadUrl();

            task.addOnSuccessListener(new OnSuccessListener<Uri>() {

                @Override

                public void onSuccess(Uri uri) {

                    String generatedFilePath = uri.toString();

                    imgpath.setText(generatedFilePath);






            ConnectDatabase db = new ConnectDatabase();

            Connection con = db.ConnectDB();

            if (con == null)

                Toast.makeText(getActivity(), "Please check your internet connection!", Toast.LENGTH_LONG).show();


            else {

                try {

                    Statement sm = con.createStatement();

                    int x = sm.executeUpdate("insert into CarBrand values('" + brandname.getText() + "','" + imgpath.getText() + "')");


                    if (x == 0)

                        Toast.makeText(getActivity(), "an error occurred, please try again in a few moments.", Toast.LENGTH_LONG).show();

                    else {

                        Toast.makeText(getActivity(), "Brand has been added.", Toast.LENGTH_LONG).show();

                        brandname.getText().clear();

                         }

                } catch (SQLException e) {

                    if (e.getErrorCode() == 2627)

                        Toast.makeText(getActivity(), "Brand already exists!", Toast.LENGTH_LONG).show();

                    else

                        Toast.makeText(getActivity(), "an error occurred", Toast.LENGTH_LONG).show();

                }


            }

                }

            });


查看完整回答
反对 回复 2022-10-12
  • 1 回答
  • 0 关注
  • 75 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信