猿问

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

我在将下载 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


守着一只汪
浏览 126回答 1
1回答

白猪掌柜的

尝试将您的 sql db 方法放在侦听器中(我不知道您的代码的上下文,但这可能不起作用,因为 firebase 方法是异步的)。现在您确定您的方法将在您获得 URL 后立即执行。像这样 :Task<Uri> task = taskSnapshot.getMetadata().getReference().getDownloadUrl();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; task.addOnSuccessListener(new OnSuccessListener<Uri>() {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @Override&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; public void onSuccess(Uri uri) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String generatedFilePath = uri.toString();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; imgpath.setText(generatedFilePath);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ConnectDatabase db = new ConnectDatabase();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Connection con = db.ConnectDB();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (con == null)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Toast.makeText(getActivity(), "Please check your internet connection!", Toast.LENGTH_LONG).show();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; try {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Statement sm = con.createStatement();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; int x = sm.executeUpdate("insert into CarBrand values('" + brandname.getText() + "','" + imgpath.getText() + "')");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (x == 0)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Toast.makeText(getActivity(), "an error occurred, please try again in a few moments.", Toast.LENGTH_LONG).show();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Toast.makeText(getActivity(), "Brand has been added.", Toast.LENGTH_LONG).show();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; brandname.getText().clear();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } catch (SQLException e) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (e.getErrorCode() == 2627)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Toast.makeText(getActivity(), "Brand already exists!", Toast.LENGTH_LONG).show();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Toast.makeText(getActivity(), "an error occurred", Toast.LENGTH_LONG).show();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; });
随时随地看视频慕课网APP

相关分类

Java
我要回答