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

之前写过一篇(一),代码过于复杂,这次用新的方式实现同样的功能。

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();
    }
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值