安卓端同时上传图片和文字,服务器端接收(二)

来源:互联网 发布:js点赞心形动态效果 编辑:程序博客网 时间:2024/06/05 07:53
之前写过一篇(一),代码过于复杂,这次用新的方式实现同样的功能。

Android端主要通过OkHttp3实现上传

    private static final MediaType MEDIA_TYPE_PNG = MediaType.parse("image/png");      private final OkHttpClient client = new OkHttpClient();      public String upload(String imageType,String userPhone,File file) throws NetworkException{          RequestBody fileBody = RequestBody.create(MediaType.parse("image/png"), file);          RequestBody requestBody = new MultipartBody.Builder()                  .setType(MultipartBody.FORM)                  .addFormDataPart("file", "head_image", fileBody)                  .addFormDataPart("name", "name")                  .addFormDataPart("email", "email")                  .build();          Request request = new Request.Builder()                  .url("http://xxxxx")                  .post(requestBody)                  .build();          Response response;          try {              response = client.newCall(request).execute();              String json = response.body().string();                System.out.println(json);                if (response.isSuccessful()) {                    System.out.println("上传成功");                } else {                    System.out.println("上传失败");                }        } catch (IOException e) {              e.printStackTrace();        }        return null;      }  

服务器端代码:

    /**     * 移动端上传数据和图片     * @param request     * @return     */    @PostMapping(value = "upload")    @ResponseBody    public String mobileUpload(HttpServletRequest request){        JSONObject jsonObject = new JSONObject();            //创建一个通用的多部分解析器            CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());            Upload upload = new Upload();            try{                String name = request.getParameter("name");                String email = request.getParameter("email");                logger.info(name);                logger.info(email);            }catch (Exception e){                e.printStackTrace();                return jsonObject.toString();            }        try{            //上传图片部分//            List<String> imgs = new ArrayList<String>();            if(multipartResolver.isMultipart(request)) {                //转换成多部分request                MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;                Map<String, MultipartFile> fileMap = multiRequest.getFileMap();                Iterator<String> fileNameIterator = fileMap.keySet().iterator();                //上传路径                File filedir = new File(UploadFileUtil.MOBILE_IMAGE_DIR);                if (!filedir.exists() && !filedir.isDirectory()){                    filedir.mkdirs();                }                //获取到图片且必须一张                if (fileNameIterator.hasNext()) {                    MultipartFile file = fileMap.get(fileNameIterator.next());                    if (file.isEmpty() || file.getSize() == 0) {                    }                    String [] strings = file.getContentType().split("/");                    String type = strings[1];                    logger.info("图片类型:" + type);                    //重命名上传后的文件名                    Date date = new Date();                    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");                    String fileName = sdf.format(date) + "." + type;                    logger.info("文件名称为:"+fileName);                    //定义上传路径                    File localFile = new File(UploadFileUtil.MOBILE_IMAGE_DIR + fileName);                    file.transferTo(localFile);                    System.out.println("上传路径为:" +localFile.getPath());                    //设置图片路径                    upload.setUploadResourceURL(localFile.getPath());                } else {                    //没有上传图片的话,则抛出异常                    throw new Exception("未上传图片");                }                    }        } catch (Exception e){            jsonObject.put("result",false);            jsonObject.put("msg",e.getMessage());            return jsonObject.toString();        }        jsonObject.put("result",true);        jsonObject.put("msg","success");        return jsonObject.toString();    }
阅读全文
0 0