zoukankan      html  css  js  c++  java
  • 安卓发送图片文字,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 “成功”;
  • 相关阅读:
    Java开发桌面程序学习(12)——Javafx 悬浮窗提示 tooptip
    Java开发桌面程序学习(11)——javafx 鼠标点击,右击,双击
    Web前端—— JQuery迷你版实现以及使用
    Web前端——表单提交和Js添加选项
    Web前端——JavaScript练习
    Web前端——JavaScript笔记
    <亲测>CentOS7中使用yum安装Nginx的方法
    Linux 软件安装到 /usr,/usr/local/ 还是 /opt 目录?
    <亲测>centos安装 .net core 2.1
    <亲测>CentOS7 安装mysql8.0(YUM方式)
  • 原文地址:https://www.cnblogs.com/lljh/p/10581142.html
Copyright © 2011-2022 走看看