Уже вторую неделю я пытаюсь загрузить несколько изображений на сервер, так как могу отправить одно изображение на сервер, но я не знаю, как это сделать с несколькими изображениями. Перейдя по этой ссылке , я могу загрузить только одно изображение на сервер, но как я могу загрузить несколько изображений на сервер? Я создал новый проект, в котором я использую библиотеку средства выбора изображений с именем TedBottomPicker , из которой я могу выбрать несколько изображений. Я хочу спросить, можно ли использовать этот же API для нескольких изображений для загрузки на сервер?
<?php
if($_SERVER['REQUEST_METHOD']=='POST'){
$image = $_POST['image'];
require_once('dbConnect.php');
$sql ="SELECT id FROM faltu ORDER BY id ASC";
$res = mysqli_query($con,$sql);
$id = 0;
while($row = mysqli_fetch_array($res)){
$id = $row['id'];
}
$path = "uploads/$id.png";
$server_ip = gethostbyname(gethostname());
$actualpath = 'http://'.$server_ip.'/imagess/'.$path;
$sql = "INSERT INTO faltu (image) VALUES ('$actualpath')";
if(mysqli_query($con,$sql)){
file_put_contents($path,base64_decode($image));
echo "Successfully Uploaded";
}
mysqli_close($con);
}else{
echo "Error";
}
А вот мой код Java, где я использую библиотеку TedBottomPicker для выбора нескольких изображений. Проблема в том, что я могу загрузить их на сервер? Вот что я попробовал.
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
public static final String UPLOAD_URL = "http://192.168.1.105/imagess/upload.php";
public static final String UPLOAD_KEY = "image";
RelativeLayout rl_pickImage;
private List<Uri> selectedUriList;
private ViewGroup mSelectedImagesContainer;
private RequestManager requestManager;
TextView txt_img;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
rl_pickImage = findViewById(R.id.rel_pickImage);
mSelectedImagesContainer = findViewById(R.id.selected_photos_container);
txt_img = findViewById(R.id.txt_img);
Button buttonUpload = findViewById(R.id.buttonUpload);
requestManager = Glide.with(this);
rl_pickImage.setOnClickListener(this);
buttonUpload.setOnClickListener(this);
}
@Override
public void onClick(View v) {
setMultiShowButton();
uploadImage();
}
private void setMultiShowButton() {
PermissionListener permissionlistener = new PermissionListener() {
@Override
public void onPermissionGranted() {
TedBottomPicker.with(MainActivity.this)
//.setPeekHeight(getResources().getDisplayMetrics().heightPixels/2)
.setPeekHeight(1600)
.showTitle(false)
.setCompleteButtonText("Done")
.setEmptySelectionText("No Select")
.setSelectMaxCount(5)
.setDeSelectIcon(R.drawable.error)
.setSelectedUriList(selectedUriList)
.showMultiImage(new TedBottomSheetDialogFragment.OnMultiImageSelectedListener() {
@Override
public void onImagesSelected(List<Uri> uriList) {
selectedUriList = uriList;
showUriList(uriList);
}
});
}
@Override
public void onPermissionDenied(ArrayList<String> deniedPermissions) {
Toast.makeText(MainActivity.this, "Permission Denied\n" + deniedPermissions.toString(), Toast.LENGTH_SHORT).show();
}
};
checkPermission(permissionlistener);
}
private void checkPermission(PermissionListener permissionlistener) {
TedPermission.with(MainActivity.this)
.setPermissionListener(permissionlistener)
.setDeniedMessage("If you reject permission,you can not use this service\n\nPlease turn on permissions at [Setting] > [Permission]")
.setPermissions(Manifest.permission.WRITE_EXTERNAL_STORAGE)
.check();
}
private void showUriList(List<Uri> uriList) {
// Remove all views before
// adding the new ones.
mSelectedImagesContainer.removeAllViews();
// iv_image.setVisibility(View.GONE);
mSelectedImagesContainer.setVisibility(View.VISIBLE);
txt_img.setText("Select image");
int widthPixel = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 100, getResources().getDisplayMetrics());
int heightPixel = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 100, getResources().getDisplayMetrics());
for (Uri uri : uriList) {
View imageHolder = LayoutInflater.from(this).inflate(R.layout.image_item, null);
CircleImageView thumbnail = imageHolder.findViewById(R.id.media_image);
requestManager
.load(uri.toString())
.apply(new RequestOptions().fitCenter())
.into(thumbnail);
mSelectedImagesContainer.addView(imageHolder);
thumbnail.setLayoutParams(new FrameLayout.LayoutParams(widthPixel, heightPixel));
txt_img.setText("Remove or Select Another");
}
}
public String getStringImage(Bitmap bmp) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] imageBytes = baos.toByteArray();
return Base64.encodeToString(imageBytes, Base64.DEFAULT);
}
private void uploadImage() {
class UploadImage extends AsyncTask<Bitmap, Void, String> {
private ProgressDialog loading;
private RequestHandler rh = new RequestHandler();
@Override
protected void onPreExecute() {
super.onPreExecute();
loading = ProgressDialog.show(MainActivity.this, "Uploading...", null, true, true);
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
loading.dismiss();
Toast.makeText(getApplicationContext(), s, Toast.LENGTH_LONG).show();
}
@Override
protected String doInBackground(Bitmap... params) {
Bitmap bitmap = params[0];
String uploadImage = getStringImage(bitmap);
HashMap<String, String> data = new HashMap<>();
data.put(UPLOAD_KEY, uploadImage);
return rh.sendPostRequest(data);
}
}
UploadImage ui = new UploadImage();
ui.execute(bitmap);
}
}