将多个图像上传到服务器

时间:2020-02-13 12:09:32

标签: android mysql image server

几乎要第二个星期,我试图在服务器上上传多个图像,因为我可以在服务器上发送单个图像,但是我不知道如何处理多个图像。 通过遵循this link,我只能将单个图像上传到服务器,但是如何将多个图像上传到服务器? 我创建了一个新项目,其中使用名为 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);
        }
    }

0 个答案:

没有答案