Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用改型将图像url存储到数据库_Android_Amazon S3_Retrofit2_Image Upload_Imageurl - Fatal编程技术网

Android 使用改型将图像url存储到数据库

Android 使用改型将图像url存储到数据库,android,amazon-s3,retrofit2,image-upload,imageurl,Android,Amazon S3,Retrofit2,Image Upload,Imageurl,是否可以在android中使用改装post request@Body方法将url发送到数据库 我正在尝试建立一个应用程序,将上传多个图像到亚马逊s3,之后将获得图像url并将其存储到另一个数据库。我已经研究这个问题两天了,但还是没能解决。请帮帮我 这是我每次将s3ImageUrl上载到数据库时的输出: { "success": true, "data_item": [ { "t_id": "5"

是否可以在android中使用改装post request@Body方法将url发送到数据库

我正在尝试建立一个应用程序,将上传多个图像到亚马逊s3,之后将获得图像url并将其存储到另一个数据库。我已经研究这个问题两天了,但还是没能解决。请帮帮我

这是我每次将s3ImageUrl上载到数据库时的输出:

{
"success": true,
"data_item": [
    {
        "t_id": "5",
        "trailerType": "",
        "trailerNo": "1",
        "f_leftInnerImg": "https",
        "f_leftOuterImg": "https",
        "f_rightInnerImg": "https",
        "f_rightOuterImg": "https",
        "m_leftInnerImg": "https",
        "m_leftOuterImg": "https",
        "m_rightInnerImg": "https",
        "m_rightOuterImg": "https",
        "r_leftInnerImg": "https",
        "r_leftOuterImg": "https",
        "r_rightInnerImg": "https",
        "r_rightOuterImg": "https"
    }
]}
下面是我的API接口:

@POST(“recordtrans”)趣味uploadImageUrl(@Body-Body:UploadImagesUrl):调用

模型类:

data class UploadImagesUrl(
@SerializedName("f_leftInnerImg") val img_frontLeft_inner: String,
@SerializedName("f_leftOuterImg") val img_frontLeft_outer : String,
@SerializedName("f_rightInnerImg") val img_frontRight_inner: String,
@SerializedName("f_rightOuterImg") val img_frontRight_outer: String,
@SerializedName("m_leftInnerImg") val img_middleLeft_inner: String,
@SerializedName("m_leftOuterImg") val img_middleLeft_outer: String,
@SerializedName("m_rightInnerImg") val img_middleRight_inner: String,
@SerializedName("m_rightOuterImg") val img_middleRight_outer: String,
@SerializedName("r_leftInnerImg") val img_rearLeft_inner: String,
@SerializedName("r_leftOuterImg") val img_rearLeft_outer: String,
@SerializedName("r_rightInnerImg") val img_rearRight_inner: String,
@SerializedName("r_rightOuterImg") val img_rearRight_outer: String,
@SerializedName("username") val username: String,
@SerializedName("transID") val transID: String)
答复:

data class DefaultResponse(val success: Boolean, val message: String)
上传\u图像\u S3\u Aws类:

class Upload_Image_S3_Aws (){



fun uploadMultipleImageS3(
    context: Context,
    path: String,
    imgFileName: String,
    username: String,
    trans_id: String,
    view: View
) {
    val pd = ProgressDialog(context)
    pd.setTitle("Uploading...")
    pd.show()

    TransferNetworkLossHandler.getInstance(context)
    val amazons3: AmazonS3 = s3ClientInitialization(context)
    java.security.Security.setProperty("networkaddress.cache.ttl", "60");

    val policy: StrictMode.ThreadPolicy = StrictMode.ThreadPolicy.Builder().permitAll().build()
    StrictMode.setThreadPolicy(policy)

    try {

        SharedPrefManager.getInstance(context).settings_response!!.forEach { userSettings ->

            val s3_Url = "${userSettings.s3_Bucket}.s3.${userSettings.s3_Region}.amazonaws.com/"

            val transferUtility = TransferUtility.builder()
                .defaultBucket(userSettings.s3_Bucket)
                .context(context).s3Client(amazons3).build()

            val file = File(path)

            val uploadObserver = transferUtility.upload(
                userSettings.s3_Bucket,
                "$imgFileName.jpg",
                file,
                CannedAccessControlList.PublicRead
            )
            uploadObserver.setTransferListener(object : TransferListener{
                override fun onProgressChanged(id: Int, bytesCurrent: Long, bytesTotal: Long) {
                    val done = (((bytesCurrent.toDouble() / bytesTotal) * 100.0).toInt())
                    pd.setMessage("Uploaded: ${done}%")
                    Log.d("zvzsv", "UPLOAD - - ID: $id, percent done = $done")
                    pd.dismiss()
                }

                override fun onStateChanged(id: Int, state: TransferState?) {

                    if (TransferState.FAILED == state || state == TransferState.WAITING_FOR_NETWORK
                        || state == TransferState.PENDING_NETWORK_DISCONNECT) {

                        Log.e("statechange","$state")

                        Toast.makeText(context, "$state", Toast.LENGTH_LONG).show()

                        pd.dismiss()

                    } else if (TransferState.COMPLETED == state) {

                        AppConstants.countCompleted.add(state.toString())

                        val s3url = amazons3.getUrl(userSettings.s3_Bucket, imgFileName).toExternalForm()

                        AppConstants.adds3Url.add(s3Url(s3url))

                        if (AppConstants.countCompleted.size == 12)
                        {

                            AppConstants.adds3Url.forEach {
                                AppConstants.f_leftInnerImg = it.s3Url
                                AppConstants.f_leftOuterImg = it.s3Url
                                AppConstants.f_rightInnerImg = it.s3Url
                                AppConstants.f_rightOuterImg = it.s3Url
                                AppConstants.m_leftInnerImg = it.s3Url
                                AppConstants.m_leftOuterImg = it.s3Url
                                AppConstants.m_rightInnerImg = it.s3Url
                                AppConstants.m_rightOuterImg = it.s3Url
                                AppConstants.r_leftInnerImg = it.s3Url
                                AppConstants.r_leftOuterImg = it.s3Url
                                AppConstants.r_rightInnerImg = it.s3Url
                                AppConstants.r_rightOuterImg = it.s3Url
                            }

                            RetrofitClient(context).instance.uploadImageUrl(
                                UploadImagesUrl(
                                    AppConstants.f_leftInnerImg,
                                    AppConstants.f_leftOuterImg,
                                    AppConstants.f_rightInnerImg,
                                    AppConstants.f_rightOuterImg,
                                    AppConstants.m_leftInnerImg,
                                    AppConstants.m_leftOuterImg,
                                    AppConstants.m_rightInnerImg,
                                    AppConstants.m_rightOuterImg,
                                    AppConstants.r_leftInnerImg,
                                    AppConstants.r_leftOuterImg,
                                    AppConstants.r_rightInnerImg,
                                    AppConstants.r_rightOuterImg,
                                    username,
                                    trans_id)
                            )

                                .enqueue(object : Callback<DefaultResponse> {
                                    override fun onFailure(call: Call<DefaultResponse>, t: Throwable) {

                                        if (!NetworkConnectionInternet.isNetworkAvailable(context)){
                                            Snackbar.make(view, AppConstants.NoInternetConnection, Snackbar.LENGTH_LONG)
                                                .setAction("Action", null).show()
                                            pd.dismiss()
                                        }
                                        else
                                        {
                                            Toast.makeText(context,t.message, Toast.LENGTH_LONG).show()
                                            pd.dismiss()
                                        }
                                    }

                                    override fun onResponse(call: Call<DefaultResponse>, response: Response<DefaultResponse>) {

                                        if (!NetworkConnectionInternet.isNetworkAvailable(view.context)){
                                            Snackbar.make(view, AppConstants.NoInternetConnection, Snackbar.LENGTH_LONG)
                                                .setAction("Action", null).show()
                                            pd.dismiss()
                                        }
                                        else
                                        {
                                            if (response.body()!!.success){
                                                Snackbar.make(view, "${AppConstants.countCompleted.size} Photos "+response.body()!!.message, Snackbar.LENGTH_LONG)
                                                    .setAction("Action", null)
                                                    .show()
                                                pd.dismiss()
                                            }
                                            else
                                            {
                                                Snackbar.make(view, "Something went wrong. Please try again", Snackbar.LENGTH_LONG)
                                                    .setAction("Action", null)
                                                    .show()
                                                pd.dismiss()
                                            }
                                        }
                                    }

                                })
                        }

                        Log.e("statechange:","$state")
                    }


                }
                override fun onError(id: Int, ex: java.lang.Exception?) {
                    Toast.makeText(context, ex.toString(), Toast.LENGTH_LONG).show()
                    pd.dismiss()
                }

            })

        }

    } catch (e: Exception) {
        e.printStackTrace()
    }

}       private fun s3ClientInitialization(context: Context): AmazonS3 {

    var s3_key = ""
    var s3_secret = ""
    var s3_region = ""
    val credentials: BasicAWSCredentials

    SharedPrefManager.getInstance(context).settings_response!!.forEach {
        s3_key = it.s3_Key!!
        s3_secret = it.s3_Secret!!
        s3_region = it.s3_Region!!

    }
    credentials = BasicAWSCredentials(s3_key, s3_secret)

   val s3 = AmazonS3Client(credentials, Region.getRegion(s3_region))
   s3.endpoint = "https://s3-$s3_region.amazonaws.com/"

    return s3
}
任何帮助都意义重大!谢谢

private fun uploadImages(view: View) {

    val username = SharedPrefManager.getInstance(view.context).user.username

    if (capture_imageAddlist.size >= 12 && trans_ID.text.toString().trim().isNotEmpty()) {

        capture_imageAddlist.forEach {
            Upload_Image_S3_Aws().uploadMultipleImageS3(
                view.context,
                it.url_image,
                it.imgFileName,
                username!!,
                trans_id,
                view
            )
        }


    } else {
        Toast.makeText(requireContext(), "Fill up all fields", Toast.LENGTH_LONG).show()
    }


}