Android okhttp上传多张图片 与 后台接收图片并保存

首先在buid.gradle中添加okhttp的依赖,需要有网络权限

<uses-permission android:name="android.permission.INTERNET" />
implementation 'com.squareup.okhttp3:okhttp:3.13.1'

1 Android端:

private void upload(ArrayList<ImageItem> selImageList) {// selImageList 包含图片路径的list
        Logs.i("upload() ");
        if (selImageList != null) {
            OkHttpClient okHttpClient = new OkHttpClient();
            for (int i = 0; i < selImageList.size(); i++) {

                File file = new File(selImageList.get(i).path); //根据路径创建file对象
                Logs.i("file.getName() "+file.getName());
                // 后台通过List<MultipartFile> files = ((MultipartHttpServletRequest) request).getFiles("files");将上传的图片取出
                MultipartBody.Builder builder = new MultipartBody.Builder()
                        .setType(MultipartBody.FORM) //表单上传文件
                        .addFormDataPart("files", //
                                file.getName(),
                                RequestBody.create(MediaType.parse("image/jpeg"), file)
                        );
                //post时的参数,后台通过request.getParameter("specialname").toString() 取出
                builder.addFormDataPart("specialname",file.getName());
                builder.addFormDataPart("fileid",file.getName());
                builder.addFormDataPart("teskid",CacheUtil.teskid);

                RequestBody requestBody = builder.build();

                Request request = new Request.Builder()
                        .url(CacheUtil.IP+"/File/saveFiles")
                        .header("Cookie", CacheUtil.Cookie)
                        .post(requestBody)
                        .build();
                Call call = okHttpClient.newCall(request);
                call.enqueue(new Callback() {
                    @Override
                    public void onFailure(Call call, IOException e) {
                        Logs.i("onFailure: " + e);
                    }

                    @Override
                    public void onResponse(Call call, okhttp3.Response response) throws IOException {
                        Logs.i("成功" + response);
                    }

                });
            }
        }
    }

2 server端:

//保存图片到数据库中

@RequestMapping(value = "/saveFiles",method = RequestMethod.POST)
    @ResponseBody
    public Map saveFile(HttpServletRequest request){
    	
        Map<String, Object> map = new HashMap<>();
        List<MultipartFile> files = ((MultipartHttpServletRequest) request).getFiles("files");
        MultipartFile file = null;
        BufferedOutputStream stream = null;
        for (int i = 0; i < files.size(); ++i) {
            file = files.get(i);
            System.out.println(file.getName());
            if (!file.isEmpty()) {
                try {
                    FileBean fileBean=new FileBean();
                    fileBean.setFfname(request.getParameter("specialname").toString());
                    System.out.println(request.getParameter("specialname").toString());
                    fileBean.setFfileid(request.getParameter("fileid").toString());
                    System.out.println(request.getParameter("fileid").toString());
                    fileBean.setTeskid(request.getParameter("teskid").toString());
                    fileService.save(fileBean, file.getInputStream());
                    map.put("resultcode", "200");
                } catch (Exception e) {
                    e.printStackTrace();
                    stream = null;
                    map.put("resultcode", "100");
                }
            } else {
                map.put("resultcode", "100");
            }
        }
        return map;
    }

 

 

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chailongger

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值