• java上传文件和参数到服务器


    public static Map<String,Object> uploadFileByHTTP(File postFile,String postUrl,Map<String,String> postParam){
            //Logger log = LoggerFactory.getLogger(UploadTest.class);
    
            Map<String,Object> resultMap = new HashMap<String,Object>();
            CloseableHttpClient httpClient = HttpClients.createDefault();
            try{
                //把一个普通参数和文件上传给下面这个地址    是一个servlet
                HttpPost httpPost = new HttpPost(postUrl);
                //把文件转换成流对象FileBody
                FileBody fundFileBin = new FileBody(postFile);
                //设置传输参数
                MultipartEntityBuilder multipartEntity = MultipartEntityBuilder.create();
                multipartEntity.setCharset(Charset.forName("utf-8"));
                multipartEntity.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
                multipartEntity.addPart(postFile.getName(), fundFileBin);//相当于<input type="file" name="media"/>
    
                //设计文件以外的参数
                Set<String> keySet = postParam.keySet();
                for (String key : keySet) {
                    //相当于<input type="text" name="name" value=name>
                    multipartEntity.addPart(key, new StringBody(postParam.get(key), ContentType.create("application/json", Consts.UTF_8)));
                }
    
                HttpEntity reqEntity =  multipartEntity.build();
                httpPost.setHeader("Content-type", "application/json");
                httpPost.setEntity(reqEntity);
    
                //log.info("发起请求的页面地址 " + httpPost.getRequestLine());
                //发起请求   并返回请求的响应
                CloseableHttpResponse response = httpClient.execute(httpPost);
                try {
                    ///log.info("----------------------------------------");
                    //打印响应状态
                    //log.info(response.getStatusLine());
                    resultMap.put("statusCode", response.getStatusLine().getStatusCode());
                    //获取响应对象
                    HttpEntity resEntity = response.getEntity();
                    if (resEntity != null) {
                        //打印响应长度
                        //log.info("Response content length: " + resEntity.getContentLength());
                        //打印响应内容
                        resultMap.put("data", EntityUtils.toString(resEntity,Charset.forName("UTF-8")));
                    }
                    //销毁
                    EntityUtils.consume(resEntity);
                } catch (Exception e) {
                    e.printStackTrace();
                } finally {
                    response.close();
                }
            } catch (ClientProtocolException e1) {
                e1.printStackTrace();
            } catch (IOException e1) {
                e1.printStackTrace();
            } finally{
                try {
                    httpClient.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            //log.info("uploadFileByHTTP result:"+resultMap);
            return resultMap;
        }
  • 相关阅读:
    Pedometer_forAndroid
    linux改动登陆主机提示信息
    Cocos2d-x-Lua (2.x)脚本开发之 Lua语言基础
    共享库加载时重定位
    寻找志同道合的伙伴
    Leetcode[20]-Valid Parentheses
    storm的集群安装与配置
    CSS样式
    splash启动速度优化
    Android驱动之 Linux Input子系统之TP——A/B(Slot)协议
  • 原文地址:https://www.cnblogs.com/zhouyuqiu/p/12106355.html
Copyright © 2020-2023  润新知