繁体   English   中英

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

[英]How to send image download URL from FireBase Storage to SQLServer Database?

我在将下载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() + "')");

                        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();
                    }

                }


            }
        });

现在我得到了url并设置为(imgpath)这是一个TextView,但问题是当它插入到数据库时它显示TextView的默认值而不是下载URL

尝试把你的方法为你的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();
                }

            }
                }
            });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM