为什么我的录像通过翻新上传到服务器后变成0个字节?

问题描述

我的应用尝试捕获视频,然后将结果发送到服务器

所以我使用下面的代码捕获视频,但是当我将其上传到服务器时,文件大小始终为0字节

因为我在临时文件中创建了它?

enter image description here

这是录制视频的代码

     private fun recordVideo() {


        val videoFile = createVideoFile()

        videoFile?.let {
            videoUri = FileProvider.getUriForFile(mContext,"com.video.record.fileprovider",it)
            val intent = Intent(MediaStore.ACTION_VIDEO_CAPTURE)
            intent.putExtra(MediaStore.EXTRA_OUTPUT,videoUri) 
            startActivityForResult(intent,REQUEST_VIDEO_CAPTURE)
        }

    }

    private fun createVideoFile() : File? {
        val fileName = "myVideoAndroid"
        val storageDir = mActivity.getExternalFilesDir(Environment.DIRECTORY_MOVIES)
        return File.createTempFile(fileName,".mp4",storageDir) // <---- because I make it in temporary file ?
    }

这是清单中的provider标记

        <provider
            android:authorities="com.video.record.fileprovider"
            android:name="androidx.core.content.FileProvider"
            android:exported="false"
            android:grantUriPermissions="true">

            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_paths" />

        </provider>

这是文件路径xml

<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android = "http://schemas.android.com/apk/res/android">
    <external-path
        name="my_videos"
        path="Android/data/com.xxxx.mediauploader/files/Movies"/>

</paths>

视频在上传到服务器之前似乎不错,我可以完美播放。

然后我使用下面的代码通过改造将其上传

界面

 @Multipart
    @POST("uploadvideo")
    fun uploadVideo(
            @Part video: MultipartBody.Part
    ): Call<UploadResponse>

然后像这样使用它

private fun createVideoFile() : File? {
    val fileName = "myVideoAndroid"
    val storageDir = mActivity.getExternalFilesDir(Environment.DIRECTORY_MOVIES)
    return File.createTempFile(fileName,storageDir)
}

val file = File(createVideoFile()!!.absolutePath)
val fileVideoPart = MultipartBody.Part.createFormData("videoFile",file.name,RequestBody.create("video/*".toMediaTypeOrNull(),file))
val call = uploadMediaAPI.uploadVideo(video = fileVideoPart)

call.enqueue(object : Callback<UploadResponse>  {


})

我可以成功上传,但是结果始终是服务器中的0个字节

如何解决这个问题?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)