Tandrow 2016-04-27 13:35 采纳率: 28.6%
浏览 3109
已采纳

Okhttp上传多图,大于4.5M失败

小一点的图片可以上传成功,大了在onResponse中输出是一个404页面,有没有小伙伴知道怎么解决,或者有图片上传的框架,多谢了,下面是我用的上传代码

 public static String uploadImages(int parameter, String url,
            Map<String, String> map, List<String> paths, final Handler handler) {

        // 参数类型
        MediaType MEDIA_TYPE_PNG = MediaType.parse("image/png");
        // 创建OkHttpClient实例
        OkHttpClient client = new OkHttpClient();
        client.setReadTimeout(1000, TimeUnit.MINUTES);
        client.setWriteTimeout(1000, TimeUnit.MINUTES);
        client.setConnectTimeout(1000, TimeUnit.MINUTES);

        MultipartBuilder builder = new MultipartBuilder()
                .type(MultipartBuilder.FORM);

        // 遍历map中所有参数到builder
        if (map != null) {
            for (String key : map.keySet()) {
                builder.addFormDataPart(key, map.get(key));
            }
        }
        if (paths != null) {
            switch (parameter) {
            case 1: 
                for (int i = 0; i < paths.size(); i++) {
                    File file = new File(paths.get(i));
                    builder.addFormDataPart("img" + (i + 1), file.getName(),
                            RequestBody.create(MEDIA_TYPE_PNG, file));
                }
                break;
            case 2:  
                for (String path : paths) {
                    builder.addFormDataPart("articleImages", path,
                            RequestBody.create(MEDIA_TYPE_PNG, new File(path)));
                }
                break;
            case 3: 
                for (String path : paths) {
                    builder.addFormDataPart("lawCeritificateImage", path,
                            RequestBody.create(MEDIA_TYPE_PNG, new File(path)));
                }
                break;
            case 4: // 更换头像
                for (String path : paths) {
                    builder.addFormDataPart("imgs", path,
                            RequestBody.create(MEDIA_TYPE_PNG, new File(path)));
                }
                break;
            case 5: // 空间图片上传
                for (String path : paths) {
                    builder.addFormDataPart("imgs", path,
                            RequestBody.create(MEDIA_TYPE_PNG, new File(path)));
                }
                break;
            default:
                break;
            }

        }

        // 构建请求体
        RequestBody requestBody = builder.build();
        // 构建请求

        Request request = new Request.Builder().url(url)// 地址
                .post(requestBody)// 添加请求体
                .build();
        // 发送异步请求,同步会报错,Android4.0以后禁止在主线程中进行耗时操作
        client.newCall(request).enqueue(new Callback() {

            public void onFailure(Request arg0, IOException arg1) {
                Log.i("dd", "error" + arg1.toString());
                Message msg = Message.obtain();
                msg.obj = arg1.toString();
                msg.what = Constants.UPLOAD_ERROR;
                handler.sendMessage(msg);
            }

            public void onResponse(Response response) throws IOException {
                String con = response.body().string();
                Message msg = Message.obtain();
                msg.obj = con;
                msg.what = Constants.UPLOAD_SUC;
                handler.sendMessage(msg);
            }

        });

        return result;

    }
  • 写回答

1条回答

  • q809422300 2016-04-27 13:45
    关注

    后台输出错误,查看后台是否限制文件的大小

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误
  • ¥30 最小化遗憾贪心算法上界
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。