• 安卓发送图片文字,java后台接收


    安卓使用retrofit2 和rxjava2

    url:

      

    @Multipart
    @POST(UrlTools.STORYUPLOAD)
    Observable<Result> saveReport(@Part List<MultipartBody.Part> parts)

    activity:

     if (contentText.equals("") && mSelected.size() < 1) {
                ToastUtils.showBottomToast("请输入内容", 0);
                return;
            }
            
            ContentResolver contentResolver = getContentResolver();
            MultipartBody.Builder builder = new MultipartBody.Builder()
                    .setType(MultipartBody.FORM)
                    .addFormDataPart("name", contentText);//表单类型; add需要的文本,第一个参数与后台对应,传输需要的文本
            
            for (int i = 0; i < mSelected.size() - 1; i++) {
                File file1 = null;
                file1 = new File(getFilePathFromContentUri(mSelected.get(i), contentResolver));
                RequestBody imageBody = RequestBody.create(MediaType.parse("multipart/form-data"), file1);
                builder.addFormDataPart("file", file1.getName(), imageBody);//imgfile 后台接收图片流的参数名
            }
            List<MultipartBody.Part> parts = builder.build().parts();
    
    //        实现请求
            utilsPresenter.getStory(VintageActivity.this, parts);

    开始请求:

        //上传文件
        @Override
        public void upFile(BaseImpl context,  List<MultipartBody.Part> parts) {
    
            RetrofitRequest.getApiService()
                    .saveReport( parts)
                    .subscribeOn(Schedulers.io())
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribe(new DefaultObserver<Result>(context, false) {
                        @Override
                        public void onSuccess(Result story) {
                            listener.onSuccess(story);
                        }
    
                        @Override
                        public void onFail(Result response) {
                            listener.onError(response, STORYLIST);
                        }
                    });
        }

    Java后台 springboot2

      @RequestMapping(value = "/upload", method = RequestMethod.POST)
        @ResponseBody
        public String handleFileUpload(HttpServletRequest request) {
            MultipartHttpServletRequest params = ((MultipartHttpServletRequest) request);
            List<MultipartFile> files = ((MultipartHttpServletRequest) request)
                    .getFiles("file");
            String name = params.getParameter("name");  //参数与安卓addFormDataPart的第一个参数对应
            System.out.println("name:" + name);
            String id = params.getParameter("id");
            System.out.println("id:" + id);
    
            Map<String, String> urlMap = new HashMap<>();
    
            MultipartFile file = null;
            BufferedOutputStream stream = null;
            for (int i = 0; i < files.size(); ++i) {
                file = files.get(i);
                if (!file.isEmpty()) {
                    try {
                        byte[] bytes = file.getBytes();
                        stream = new BufferedOutputStream(new FileOutputStream(
                                new File("./../images/"+file.getOriginalFilename())));//存在项目根目录下
                        stream.write(bytes);
                        stream.close();
                        urlMap.put(SERVER_URL+"resource/images/" , file.getOriginalFilename());
                    } catch (Exception e) {
                        stream = null;
                        return e.toString();
                    }
                } else {
                    return "空";
                }
            }
            return “成功”;
  • 相关阅读:
    CodeForces 682B Alyona and Mex (排序+离散化)
    CodeForces 682A Alyona and Numbers (水题)
    CodeForces 682E Alyona and Triangles (计算几何)
    CodeForces 176B Word Cut (计数DP)
    CodeForces 173C Spiral Maximum (想法、模拟)
    Spring源码剖析3:Spring IOC容器的加载过程
    Spring源码剖析2:初探Spring IOC核心流程
    深入理解JVM虚拟机13:再谈四种引用及GC实践
    深入理解JVM虚拟机12:JVM性能管理神器VisualVM介绍与实战
    深入理解JVM虚拟机11:Java内存异常原理与实践
  • 原文地址:https://www.cnblogs.com/lljh/p/10581142.html
Copyright © 2020-2023  润新知