Hướng dẫn upload image php mysqli - tải lên hình ảnh php mysqli

Hi các bạn trước khi bắt đầu bài viết  các bạn chưa xem các bài viết trước có thể quay lại xem để hiểu hơn:

Trước khi băt đầu bài viết để hiểu hơn về retrofit các bạn xem trước các bài viết này: Tìm Hiểu về Retrofit
Tìm Hiểu về Retrofit

Sử dụng retrofit getdata

Sử dụng retrofit post data

Ở bài viết này mình sẽ hướng dẫn các bạn cách upload một image lên server sử dụng thư viện retrofit 2 theo cách mà mình hay làm.

Lưu ý đây không phải cách dựa trên document của Retrofit 2

Cấu trúc project:

Các thư viên hỗ trợ:

Sử dụng thư viện ButterKnife

  compile 'com.squareup.retrofit2:retrofit:2.0.2'
    compile 'com.squareup.retrofit2:converter-gson:2.0.2'
    compile 'com.jakewharton:butterknife:8.4.0'
    apt 'com.jakewharton:butterknife-compiler:8.4.0'
    compile 'com.github.bumptech.glide:glide:3.7.0'
  1. Tạo bảng
CREATE TABLE `imageupload`[
    `id` INT PRIMARY KEY AUTO_INCREMENT,
    `url` VARCHAR[50] NOT NULL,
    UNIQUE [id]
];

2. Viết trang PHP  như sau



    
    
    
    
    

4. Bắt đầu code

  • Viết API
public interface APIUpload {
    @FormUrlEncoded
    @POST["upload-image.php"]
    Call uploadImage[@Field["imageCode"]String imgCode,
                              @Field["imageName"]String imgName];
}
  • Viết model nhận thông tin trả về
public class Message implements Serializable{
    @SerializedName["message"]
    private String message;
//contructor
//getter/ setter
}
  • MainActivity

Viết hàm checkpermistion cho android 6.0

    //Check permistion android 6.0
    private void checkPermistion[] {
        if [ContextCompat.checkSelfPermission[MainActivity.this,
                Manifest.permission.READ_EXTERNAL_STORAGE]
                != PackageManager.PERMISSION_GRANTED] {
            if [ActivityCompat.shouldShowRequestPermissionRationale[MainActivity.this,
                    Manifest.permission.READ_EXTERNAL_STORAGE]] {

            } else {
                ActivityCompat.requestPermissions[MainActivity.this,
                        new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
                        1];
            }
        }
    }
  • Lấy ảnh trong thư viện sử dụng Intent
   @OnClick[R.id.buttonChoose]
    public  void chooseImage[]{
        checkPermistion[];
        Intent intent = new Intent[Intent.ACTION_GET_CONTENT];
        intent.setType["image/*"];
        startActivityForResult[intent, 0];
    }
  • Nhận data, load ảnh lên imageView
 @Override
    public void onActivityResult[int requestCode, int resultCode, Intent data] {
        super.onActivityResult[requestCode, resultCode, data];

        if [requestCode == 0 && resultCode == MainActivity.this.RESULT_OK] {
            PATH = RealPathUtil.getPath[MainActivity.this, data.getData[]];
            Uri uri = Uri.fromFile[new File[PATH]];
            // Get name
            imgName = PATH.substring[PATH.lastIndexOf["/"]+1];
            Toast.makeText[MainActivity.this, imgName, Toast.LENGTH_LONG].show[];
            try {
                //Get BitMap
                bitmap = MediaStore.Images.Media.getBitmap[getContentResolver[], uri];
            } catch [IOException e] {
                e.printStackTrace[];
            }
            // Load image
            Glide.with[MainActivity.this].load[uri].override[420, 594].centerCrop[].into[imageView];
            Toast.makeText[this, PATH, Toast.LENGTH_LONG].show[];
        }
    }
  • Encode bitmap toString để upload lên server
   // Encode bitmap to String
    public String getBitMap[Bitmap bmp]{
        ByteArrayOutputStream baos = new ByteArrayOutputStream[];
        bmp.compress[Bitmap.CompressFormat.JPEG, 50, baos];
        byte[] imageBytes = baos.toByteArray[];
        String encodedImage = Base64.encodeToString[imageBytes, Base64.DEFAULT];
        return encodedImage;
    }
  • Hàm upload như sau
CREATE TABLE `imageupload`[
    `id` INT PRIMARY KEY AUTO_INCREMENT,
    `url` VARCHAR[50] NOT NULL,
    UNIQUE [id]
];
0
  • Lớp Util xử dụng để get path của hình ảnh []
CREATE TABLE `imageupload`[
    `id` INT PRIMARY KEY AUTO_INCREMENT,
    `url` VARCHAR[50] NOT NULL,
    UNIQUE [id]
];
1

Kết quả:

Check link tại đây: //dev.androidcoban.com/blog/upload/

Vậy là xong tiến hành chạy và kiểm tra kết quả! Chúc các bạn thành công!

Bài Viết Liên Quan

Chủ Đề