Могу ли я изменить изображение с URI на blob, а затем сохранить его на онлайн-сервере SQL? - PullRequest
0 голосов
/ 03 мая 2020

У меня есть несколько изображений в моей базе данных SQLite, но они хранятся как URI, я попытался использовать растровое изображение для их декодирования, затем сжать их как PNG или JPEG, а затем сохранить их на сервере. Но когда я снова получу их на своем рабочем столе Это означает, что что-то не так со значением BLOB-объекта, которое я загрузил. Я не уверен, что загруженные данные были данными BLOB-объекта или просто некоторыми байтами.

Вот код со сжатием от Ури до блоба, как я пытался:

 public class DoLogin extends AsyncTask<String, String, String> {

        String message = "";
        Boolean isSuccess = false;


        @Override
        protected void onPreExecute() {

            progressDialog.setMessage("Processing your order...");
            System.out.println("post progress");
            progressDialog.show();
        }


        @Override
        protected String doInBackground(String... params) {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {


                    try {
                        Connection con = connectionClass.CONN();
                        if (con == null) {
                            message = "Error in connection";
                        } else {
                            System.out.println("background");
                            Cursor cursor2 = mDatabaseHelper.GetPath();
                            cursor2.moveToNext();
                            System.out.println(cursor2);
                            Cursor cursor = mDatabaseHelper.getDataOfTable();
                            cursor.moveToNext();
                            String id2 = getIntent().getStringExtra("storeid");
                            String id3 = getIntent().getStringExtra("specialtyid");
                            ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
                            Statement stmt1 = null;
                            ResultSet rs1 = null;
                            String nameid = getIntent().getStringExtra("nameid");
                            if(cursor2.getCount() > 0)
                            {
                                String querygetlastnum = "SELECT TOP 1 * FROM OrderMainData ORDER BY OrderID DESC";
                                Statement statement = con.createStatement();
                                ResultSet resultSet = statement.executeQuery(querygetlastnum);
                                if (resultSet.next()){
                                    int addone = 1;
                                    String oderid = resultSet.getString("OrderID");
                                    addone += Integer.valueOf(oderid);
                                    Bitmap bit = BitmapFactory.decodeFile(cursor2.getString(0));
                                    bit.compress(Bitmap.CompressFormat.JPEG, 0, outputStream);
                                    String getname = getIntent().getStringExtra("nameofcus");
                                    ContentValues cv = new ContentValues();
                                    String timeStamp = new SimpleDateFormat("dd/MM/yyyy").format(new Date());
                                    cv.put("images", outputStream.toByteArray());
                                    System.out.println(cv);
                                    String queryinsertimage ="INSERT INTO OrderMainData values('"+id2+"','"+nameid+"','"+getname+"','"+addone+"','"+id2+"-"+nameid+"-"+addone+"','"+timeStamp+"','"+cursor.getString(2)+"','"+mDatabaseHelper.getPriceSum()+"','false','','false','','false','','false','','false','');"+
                                            "INSERT INTO OrderAttachment values('"+id2+"-"+nameid+"-"+addone+"','"+cv+"');"+
                                            "INSERT INTO OrderDetailData values('"+id2+"-"+nameid+"-"+addone+"','" + cursor.getString(3) + "','"+cursor.getString(2)+"','"+cursor.getString(0)+"','"+mDatabaseHelper.getPriceSum()+"')";
                                    System.out.println(id2+"-"+nameid+"-"+id3);
                                    stmt1 = con.createStatement();
                                    stmt1.executeUpdate(queryinsertimage);
                                }

                            }else {
                                Toast.makeText(Listitemsbought.this,"Cursor null",Toast.LENGTH_LONG).show();
                            }






                            if (stmt1 != null) {
                                System.out.println("next");
                                Toast.makeText(Listitemsbought.this,"Order Completed Successfully",Toast.LENGTH_LONG).show();
                                //Intent intent = new Intent(Listitemsbought.this, order_done.class);
                                //startActivity(intent);
                               // finish();
                                isSuccess = true;


                            } else {
                                message = "Error 912:An error occurred come back later!";
                                isSuccess = false;
                            }
                        }
                    } catch (Exception ex) {
                        isSuccess = false;
                        ex.printStackTrace();
                        message = "Exceptions" + ex;
                    }
                }
            });
            return message;
        }

            @Override
            protected void onPostExecute (String r) {
                System.out.println("khalas");
                progressDialog.dismiss();

                if (isSuccess) {
                    Toast.makeText(Listitemsbought.this, "Success", Toast.LENGTH_SHORT).show();
                }
            }





    }

Есть идеи?

...