0
  • 最佳答案
    // 创建 RequestBody,用于封装构建RequestBody
    val fileType = "图片的类型,可能是jpg,png,gif,自己想办法拿"
    val requestFile: RequestBody = RequestBody.create("image/$fileType".toMediaTypeOrNull(), file)
    // MultipartBody.Part  和后端约定好Key,这里的partName是用image
    val body: MultipartBody.Part = MultipartBody.Part.createFormData("image", file.name, requestFile)
    viewModelScope.launch {
        request { uploadImage(body) }
                .onSucceed {
                    
                }
                .onFailure {
    
                }
    }
    
    /**
     * 上传摸鱼图片
     * @param file Part
     * @return BaseResponse<String>
     */
    @Multipart
    @POST("/ct/image/mo_yu")
    suspend fun uploadImage(@Part() file: MultipartBody.Part): BaseResponse<String>
    
    s少年,我这代码保熟。拿去用吧。如果看不懂kt,当我没说。
    
    1139423796017500160  评论     打赏       断点-含光君
    • 臭皮匠  回复 @断点-含光君
      我看得懂kotlin 我稍后来试试 谢谢大佬
      臭皮匠 2021-12-22 13:44   回复 1382711465131241472
    • 臭皮匠  回复 @断点-含光君
      解决啦big old RequestBody.create(MediaType.parse("image/jpeg"),pic_file); 使用这个才能上传jpg图片 一切应该都和这个type有关 我再修改一下
      臭皮匠 2021-12-22 14:24   回复 1382711465131241472
    • 断点-含光君  回复 @臭皮匠
      图片的类型是可以通过api拿到的,那都什么就给什么。
      断点-含光君 2021-12-22 14:49   回复 1139423796017500160
    • 拉大锯  回复 @断点-含光君
      我才发现你这保熟
      拉大锯 2021-12-22 14:52   回复 1153952789488054272
    • 断点-含光君  回复 @拉大锯
      一顿操作猛如虎,一看打赏2个b
      断点-含光君 2021-12-22 14:54   回复 1139423796017500160
    • 拉大锯  回复 @断点-含光君
      哈哈!!!
      拉大锯 2021-12-22 15:02   回复 1153952789488054272
    • 臭皮匠  回复 @断点-含光君
      补补补
      臭皮匠 2021-12-22 15:05   回复 1382711465131241472
    • 断点-含光君  回复 @臭皮匠
      开玩笑的了~~~
      断点-含光君 2021-12-22 15:58   回复 1139423796017500160
  • 请求带乱码 这很奇怪

    1382711465131241472  评论     打赏       臭皮匠
    • 2021-12-17 11:42:11.424 21004-21470/com.lcq.st.sugarapp I/okhttp.OkHttpClient: <-- 400 Bad Request https://api.sunofbeach.net/ct/image/mo_yu (6610ms)
      2021-12-17 11:42:11.424 21004-21470/com.lcq.st.sugarapp I/okhttp.OkHttpClient: Server: nginx/1.17.6
      2021-12-17 11:42:11.424 21004-21470/com.lcq.st.sugarapp I/okhttp.OkHttpClient: Date: Fri, 17 Dec 2021 03:42:11 GMT
      2021-12-17 11:42:11.424 21004-21470/com.lcq.st.sugarapp I/okhttp.OkHttpClient: Content-Type: application/json;charset=UTF-8
      2021-12-17 11:42:11.424 21004-21470/com.lcq.st.sugarapp I/okhttp.OkHttpClient: Transfer-Encoding: chunked
      2021-12-17 11:42:11.425 21004-21470/com.lcq.st.sugarapp I/okhttp.OkHttpClient: Connection: keep-alive
      2021-12-17 11:42:11.425 21004-21470/com.lcq.st.sugarapp I/okhttp.OkHttpClient: X-Content-Type-Options: nosniff
      2021-12-17 11:42:11.425 21004-21470/com.lcq.st.sugarapp I/okhttp.OkHttpClient: X-XSS-Protection: 1; mode=block
      2021-12-17 11:42:11.425 21004-21470/com.lcq.st.sugarapp I/okhttp.OkHttpClient: Cache-Control: no-cache, no-store, max-age=0, must-revalidate
      2021-12-17 11:42:11.425 21004-21470/com.lcq.st.sugarapp I/okhttp.OkHttpClient: Pragma: no-cache
      2021-12-17 11:42:11.425 21004-21470/com.lcq.st.sugarapp I/okhttp.OkHttpClient: Expires: 0
      2021-12-17 11:42:11.425 21004-21470/com.lcq.st.sugarapp I/okhttp.OkHttpClient: X-Frame-Options: DENY
      2021-12-17 11:42:11.427 21004-21470/com.lcq.st.sugarapp I/okhttp.OkHttpClient: {"timestamp":"2021-12-17 11:42","status":400,"error":"Bad Request","message":"Required request part 'image' is not present","path":"/ct/image/mo_yu"}
      2021-12-17 11:42:11.427 21004-21470/com.lcq.st.sugarapp I/okhttp.OkHttpClient: <-- END HTTP (149-byte body)
      2021-12-17 11:42:11.429 21004-21004/com.lcq.st.sugarapp E/-->: updatafile--success code =400
      2021-12-17 11:42:11.429 21004-21004/com.lcq.st.sugarapp E/-->: updatafile--success message=Bad Request
      

      报错日志 补全啦 各位大佬有空帮忙指点下哈

      1382711465131241472  评论     打赏       臭皮匠
      • 拉大锯  回复 @臭皮匠
        iamge?
        拉大锯 2021-12-17 14:34   回复 1153952789488054272
      • 臭皮匠  回复 @拉大锯
        我去 我现在改回来是timeout I/okhttp.OkHttpClient: K�ڶ��0�1Ĩ�����t����vf��{M8Q��!��������Q��!�ؙ\��H8���������?�Z�L���c� &l�uP;�ֲa�����^�"��}@l�z�SJ1���k�>�������H��y��Zc -���a�,�u��Y͏�۵#Æ�
        臭皮匠 2021-12-17 14:40   回复 1382711465131241472
      • 臭皮匠  回复 @拉大锯
        发现png 格式不支持上传哈哈哈 这个超时在安卓10 和11 在模拟器6.0就正常 -error message=timeout 2021-12-17 14:50:35.730 16349-16349/com.lcq.st.sugarapp W/System.err: java.net.SocketTimeoutException: timeout 2021-12-17 14:50:35.737
        臭皮匠 2021-12-17 14:51   回复 1382711465131241472
      • 臭皮匠  回复 @臭皮匠
        不对劲 jpg也不支持 超时估计是网络问题哈哈哈 这一点我就有点疑惑了{"success":false,"code":11111,"message":"不支持此图片类型","data":null} 图片名是 /storage/emulated/0/VideoShare/video/2021.12.14_12:09:22.jpg
        臭皮匠 2021-12-17 15:02   回复 1382711465131241472
      • 臭皮匠  回复 @拉大锯
        康师傅 我上传png和jpg都显示 不支持此图片类型 这块是我请求的时候错误还是服务器那边拒绝了呢
        臭皮匠 2021-12-17 15:48   回复 1382711465131241472
      • 拉大锯  回复 @臭皮匠
        你图片名字不要用点和冒号试试,忘记后台是否有这些过滤。
        拉大锯 2021-12-17 17:53   回复 1153952789488054272
      • 臭皮匠  回复 @拉大锯
        /storage/emulated/0/2021_12_17_17_12_17.jpg 文件名是下划线哦 {"success":false,"code":11111,"message":"不支持此图片类型","data":null} 格式是这样的
        臭皮匠 2021-12-17 17:56   回复 1382711465131241472
      • 拉大锯  回复 @臭皮匠
        嗯,明天之前我再回你吧。
        拉大锯 2021-12-17 17:58   回复 1153952789488054272
      • 拉大锯  回复 @臭皮匠
        或者你可以参考一下小默的代码,他们都可以成功,应该可以的呀[捂脸]
        拉大锯 2021-12-17 17:58   回复 1153952789488054272
      • 臭皮匠  回复 @拉大锯
        好 我要放假啦 这个不急了 下周三再来搞
        臭皮匠 2021-12-17 18:00   回复 1382711465131241472
      • 臭皮匠  回复 @拉大锯
        康师傅 解决啦RequestBody.create(MediaType.parse("image/jpeg"),pic_file); 使用这个才能上传jpg图片 一切应该都和这个type有关 我再修改一下
        臭皮匠 2021-12-22 14:24   回复 1382711465131241472
      • 拉大锯  回复 @臭皮匠
        嗯嗯,我是忘记回你了么[捂脸]
        拉大锯 2021-12-22 14:32   回复 1153952789488054272
      • 臭皮匠  回复 @拉大锯
        你让我找小默拿代码 断点给我了 然后我放假没带电脑 才搞好
        臭皮匠 2021-12-22 14:45   回复 1382711465131241472
    相关问题
    幻影~ · 提问
    2024-04-13 20:13 7 2
    幻影~ · 找工作
    2024-04-07 10:44 11 2
    幻影~ · 问题
    2024-03-31 17:20 7 2
    TONYGFX · AOSP
    2024-03-28 17:11 4 2