Загрузить изображение в базу данных, используя залп JSON - PullRequest
0 голосов
/ 11 мая 2018

Мне трудно загружать изображения в базу данных, используя залп. я искал решение, прежде чем опубликовать это, но не получил результатов.

Вот мой код:

Фрагмент, где все это происходит:

Данные, которые я отправляю в putParams, работают нормально и все, столбец фотографий в базе данных обновляется, но я не получаю изображение в папке.

package com.example.salim.projet.fragments;


import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.app.Fragment;
import android.provider.MediaStore;
import android.util.Base64;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.example.salim.projet.R;
import com.example.salim.projet.activities.AccueilActivity;
import com.example.salim.projet.model.Mysingleton;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import de.hdodenhof.circleimageview.CircleImageView;

import static android.app.Activity.RESULT_OK;


public class ProfileFragment extends android.support.v4.app.Fragment {

    private CircleImageView profile_image;
    private final int IMG_REQUEST = 1 ;
    private Bitmap bitmap;

    private String theEmail;
    private String name = "";
    private String surName = "";
    private String nomImg;

    private TextView nom_prenom;

    private ImageView uploadIMG;



    String info_url = "http://10.0.3.2/recupname.php";
    String upload_url = "http://10.0.3.2/ImageUpload/uploadimage.php";

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_profile, container, false);

        nom_prenom = (TextView) view.findViewById(R.id.nom_prenom);

        profile_image = (CircleImageView) view.findViewById(R.id.profile_image);
        uploadIMG = (ImageView) view.findViewById(R.id.uploadIMG);

        profile_image.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                selectImage();
            }
        });

        uploadIMG.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                uploadImage();
            }
        });


        final AccueilActivity activity = (AccueilActivity) getActivity();

        theEmail = activity.getEmail();
        name = activity.getName();
        surName = activity.getSurName();
        nomImg = name+surName;


        nom_prenom.setText(name + " " + surName);





















        return view;
    }

    private void uploadImage()
    {

        StringRequest stringRequest = new StringRequest(Request.Method.POST, upload_url,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {

                        try {
                            JSONObject jsonObject = new JSONObject(response);
                            String Response = jsonObject.getString("response");
                            Toast.makeText(getContext(), Response, Toast.LENGTH_SHORT).show();
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }

                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

            }
        })

        {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> params = new HashMap<String, String>();


                params.put("email", theEmail);
                params.put("name", nomImg);
                params.put("image", imgToString(bitmap));




                return params;
            }
        };

        Mysingleton.getInstance(getContext()).addToRequestQueue(stringRequest);




    }


    private String imgToString(Bitmap bitmap)
    {
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
        byte[] imgBytes = byteArrayOutputStream.toByteArray();

        return Base64.encodeToString(imgBytes, Base64.DEFAULT);

    }



    private void selectImage()
    {
        Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(intent, IMG_REQUEST);
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == IMG_REQUEST && resultCode == RESULT_OK && data != null)
        {
            Uri path = data.getData();
            try {
                bitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), path);
                profile_image.setImageBitmap(bitmap);
                uploadIMG.setVisibility(View.VISIBLE);
            } catch (IOException e) {
                e.printStackTrace();
            }


        }
    }
}

Скрипт PHP:

<?php
require "conn.php";

$email = $_POST["email"];
$name = $_POST["name"];
$image = $_POST["image"];


$sql = "UPDATE utilisateurs SET photo='$name', updated_at=now() WHERE email like '$email'";
$upload_path = "/Uploads/$name.jpg";

if (mysqli_query($conn, $sql)) 
{
    file_put_contents($upload_path, base64_decode($image));
    echo json_encode(array('response'=>'Image Uploaded Successfully'));
}

else
{
    echo json_encode(array('response'=>'Image upload failed'));
}


$conn->close();





?>

1 Ответ

0 голосов
/ 11 мая 2018

Это работает, мне пришлось изменить разрешения для моей html-папки в Ubuntu, чтобы он мог создавать образ.

...