kotlin загрузить изображение путем модернизации - PullRequest
1 голос
/ 28 января 2020

Я хочу выбрать изображение из галереи и загрузить его на сервер путем модернизации. но когда я загружаю изображение, ответ, который возвращается, неуспешен, и причина: (нет такого файла или каталога), я думаю, что у моего кода сервера также есть некоторая проблема, пожалуйста, проверьте и помогите мне, это - мои коды:

мой apiservice :

@Multipart
    @POST("upload.php")
    fun uploadImage(@Part filePart:MultipartBody.Part):Call<Message>

код фрагмента:

    image.setOnClickListener {
                var intent = Intent(Intent.ACTION_PICK)
                intent.type = "image/*"
                startActivityForResult(intent, 1001)
            }

 override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (requestCode == 1001 && resultCode == Activity.RESULT_OK) {
            image.setImageURI(data!!.data)
            var file = File(data!!.data!!.path)
            var requestBody = RequestBody.create(MediaType.parse("image/jpeg"), file)
            var filePart = MultipartBody.Part.createFormData("upload_file", file.name, requestBody)
            viewModel.uploadImage(filePart).observe(this, Observer {
                Toast.makeText(context, it.message, Toast.LENGTH_LONG).show()
            })

        }
    }

и код сервера:

define ('SITE_ROOT', realpath(dirname(__FILE__)));
//if(isset($_FILES['upload_file'])) {

    $target_dir = "/uploads/";
    $target_file = $target_dir . microtime().rand(99999,999999).basename($_FILES["upload_file"]["name"]);
    $uploadOk = 1;
    $imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake image
    if(isset($_POST["submit"])) {
        $check = getimagesize($_FILES["upload_file"]["tmp_name"]);
        if($check !== false) {
            $uploadOk = 1;
        } else {
            echo '{"status":"error","message":"فایل معتبر نیست"}';
            $uploadOk = 0;
        }
    }


// Check file size
    if ($_FILES["upload_file"]["size"] > 500000) {
        echo '{"status":"error","message":"حجم عکس نباید بیشتر از 500 کیلوبایت باشد"}';
        $uploadOk = 0;
    }
// Allow certain file formats
    if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
         ) {
        echo '{"status":"error","message":"فرمت عکس اشتباه است"}';
        $uploadOk = 0;
    }
// Check if $uploadOk is set to 0 by an error
    if ($uploadOk == 0) {
        echo '{"status":"error","message":"متاسفانه عکس آپلود نشد"}';
// if everything is ok, try to upload file
    } else {
        if (move_uploaded_file($_FILES["upload_file"]["tmp_name"], SITE_ROOT.$target_file)) {
            echo '{"status":"success","message":"عکس با موفقیت آپلود شد"}';
        } else {
            echo '{"status":"error","message":"مشکل در آپلود فایل"}';
        }
    //}
}
...