Мне трудно загружать изображения в базу данных, используя залп.
я искал решение, прежде чем опубликовать это, но не получил результатов.
Вот мой код:
Фрагмент, где все это происходит:
Данные, которые я отправляю в 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();
?>