2 tandrow Tandrow 于 2016.04.27 21:35 提问

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
q809422300   2016.04.27 21:45
已采纳

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

Tandrow
Tandrow 的确是后台限制大小了,后台开始太确定自己修改了,不能太大意,
大约 2 年之前 回复
Tandrow
Tandrow 大于4.5M后,后台就收不到我的请求了,
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
okhttp 上传大文件失败
博主遇到的是 服务器设置了上传文件限值:2M,修改php.ini upload_max_filesize 后即可上传大图片
OKhttp上传多张图片到服务器的实现!!!
网上找了很多,但是都是断断续续的不是很完整,这里二话不说上干货!//类型private static final MediaType MEDIA_TYPE_PNG = MediaType.parse(&quot;image/*&quot;);//多图上传 MultipartBody.Builder builder = new MultipartBody.Builder().setType(MultipartBo...
Android okHttp上传单张或多张照片
private static final MediaType MEDIA_TYPE_PNG = MediaType.parse("image/png"); private final OkHttpClient client = new OkHttpClient(); private void uploadImg() { //mImgUrls为存放图片地址的集合
使用Okhttp上传图片
写项目的时候接触了上传图片这个模块。第一次使用OKhttputils上传图片时发现有时候上传成功,有时候失败报500错误,我纠结了一天,用postman测试接口是没有问题的,最后换回原生的okhttp框架去写。后来发现可能是之前的OKhttputils版本太低了导致的(2.6.2),现在用的Okhttp版本是(3.2.0) private static final String TAG =
android 使用OkHttp上传多张图片
简述还是先来说说为啥用OkHttp作为多图片上传的框架,原因有两点: 1、OkHttp可以作为Volley底层传输协议,速度更快 2、使用Xutils和KJFramework上传图片存在一个小问题,首先,可以上传,并且可以上传多张图片,也可以上传其他的参数,那问题在哪里呢?在后台接受参数时很不灵活,Xutlis及KJFramework使用HashMap来上传每个参数,每一张图片也必须有一个唯一的
okhttp文件及数据同时上传
在app 中,最基本的设置用户头像,需要进行头像的图片上传,那就会使用到 post 进行上传文件的操作。必然要了解下 Multipart/form-data 的含义。以前在写这部分代码的时候,不理解Headers.of(xxx)什么意思,而且 里面填写的格式又有什么要求代表了什么意思 等。 看到上面的api 的说明文档更是头大,所以需要了解下 Multipart/form-dat
okhttp上传头像
protected static final int CHOOSE_PICTURE = 0;     protected static final int TAKE_PICTURE = 1;     private static final int CROP_SMALL_PICTURE = 2;     protected static Uri tempUri; priva
OkHttp上传Json数据
public class MainActivity extends AppCompatActivity {public static final String TAG = "MainActivity"; public static final MediaType JSON=MediaType.parse("application/json; charset=utf-8"); @Override pr
Java编程思想 第四版 清晰版4.5M
java编程思想 第四版 很清晰只有4.5M大小 比80多M的电子书清晰很多
OkHttp 上传监听
其实就是对网络请求RequestBody进行来代理. 使用: public void upload(View view) { File externalStorageDirectory = new File(Environment.getExternalStorageDirectory ().getAbsoluteFile(), "nihao.apk"); Log.e(TA