java中用post方式传输某个文件

方式一:直接取本地某个文件进行上传

package com.picc.util;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

import com.newtouch.log.Ulog;

public class UpImageUtil {
	public static void main(String[] args) {
	    // 取本地文件
		File file = new File("/Users/wuxing/Desktop/test.png");
		// 创建httpPost
		HttpPost httpPost = new HttpPost("http://10.100.100.100/XXXXXXXXX");
		Map<String, String> header = new HashMap<String, String>();

		header.put("organ_id", "111");
		for (String key : header.keySet()) {
			httpPost.setHeader(key, header.get(key));
		}
		try {
			// 设置参数
			MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create();
			multipartEntityBuilder.addBinaryBody("file", file);
			HttpEntity reqEntity = multipartEntityBuilder.build();
			httpPost.setEntity(reqEntity);
		} catch (Exception e) {
			Ulog.error(e);
		}
		CloseableHttpClient httpClient = null;
		CloseableHttpResponse response = null;
		HttpEntity entity = null;
		String responseContent = null;
		try {
			// 创建默认的httpClient实例.
			httpClient = HttpClients.createDefault();
			// 执行请求
			response = httpClient.execute(httpPost);
			entity = response.getEntity();
			responseContent = EntityUtils.toString(entity, "UTF-8");
		} catch (Exception e) {
			Ulog.error(e);
		} finally {
			try {
				// 关闭连接,释放资源
				if (response != null) {
					response.close();
				}
				if (httpClient != null) {
					httpClient.close();
				}
			} catch (IOException e) {
				Ulog.error(e);
			}
		}
		System.out.println(responseContent);

	}
}


方式二:接收base64格式然后转成文件进行上传

public  Map<String,String> uploadPictureImageToETong(Map<String,String> map) {

        BaseResult  baseResult = new BaseResult();
        String policyUuid = map.get("policyUuid");
        String base64Image = map.get("base64Image");
        String imageType = map.get("imageType");
        String imageUrl = map.get("imageUrl");
        String organId = map.get("organId");
 

        OutputStream out = null;
        CloseableHttpClient httpClient = null;
        CloseableHttpResponse response = null;
        HttpEntity entity = null;
        String responseContent = null;
        Map<String,String> resultMap = new HashMap<>();

        try {
            String dataPrix = "";
            String [] d = base64Image.split("base64,");
            if(d != null && d.length == 2){
                dataPrix = d[0];
                // data = d[1];
            }else{
                throw new Exception("图片上传失败,影像数据格式不合法");
            }

            //前台在用Ajax传base64值的时候会把base64中的+换成空格,所以需要替换回来。
            base64Image = base64Image.replaceAll(" ", "+");


            //图片后缀
            String suffix = "";
            if("data:image/jpeg;".equalsIgnoreCase(dataPrix)){//data:image/jpeg;base64,base64编码的jpeg图片数据
                suffix = ".jpeg";
                //去除base64中无用的部分,上传相应的图片的是去掉对应的即可
                base64Image = base64Image.replace("data:image/jpeg;base64,", "");
            } else if("data:image/jpg;".equalsIgnoreCase(dataPrix)){//data:image/gif;base64,base64编码的jpg图片数据
                suffix = ".jpg";
                base64Image = base64Image.replace("data:image/jpg;base64,", "");
            } else if("data:image/png;".equalsIgnoreCase(dataPrix)){//data:image/png;base64,base64编码的png图片数据
                suffix = ".png";
                base64Image = base64Image.replace("data:image/png;base64,", "");
            }else {
                //throw new Exception("上传图片格式不合法");
                String[] base64BankCarkImageString = base64Image.split(",");
                base64Image = base64BankCarkImageString[1];
                suffix = ".png";
            }

            // 生成文件名
            DateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmssSSS");
            String strDateName = dateFormat.format(new Date());
            String strTypeName;
            
            switch (imageType){
                case "1":
                    strTypeName = "bankOn";
                    break;
                case "2":
                    strTypeName = "bankDown";
                    break;
                case "3":
                    strTypeName = "signHead";
                    break;
                case "4":
                    strTypeName = "signHand";
                    break;
                default:
                    strTypeName = "image";
                    break;
            }
            //上传文件的名字
            String strFileName = strDateName + strTypeName + suffix;


            BASE64Decoder base64decoder = new BASE64Decoder();
            //base64图片解码
            byte[] byteimgDate = base64decoder.decodeBuffer(base64Image);

            for (int i = 0; i < byteimgDate.length; ++i) {
                // 调整异常数据
                if (byteimgDate[i] < 0) {
                    byteimgDate[i] += 256;
                }
            }

            //上传图片路径
            File imgFile = new File(strFileName);
            imgFile.createNewFile();

            if (!imgFile.exists()) {
                imgFile.createNewFile();
            }

            out = new FileOutputStream(strFileName);
            out.write(byteimgDate);
            out.flush();
            out.close();

            // 创建httpPost
            HttpPost httpPost = new HttpPost(imageUrl);
            Map<String, String> header = new HashMap<String, String>();
            //设置机构代码
            header.put("organ_id", organId);
            for (String key : header.keySet()) {
                httpPost.setHeader(key, header.get(key));
            }

            // 设置参数
            MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create();
            multipartEntityBuilder.addBinaryBody("file", imgFile);
            HttpEntity reqEntity = multipartEntityBuilder.build();
            httpPost.setEntity(reqEntity);

            // 创建默认的httpClient实例.
            httpClient = HttpClients.createDefault();
            // 执行请求
            response = httpClient.execute(httpPost);
            entity = response.getEntity();
            responseContent = EntityUtils.toString(entity, "UTF-8");

            HolderBankInfoSubmitResponseDTO submitResponse = new HolderBankInfoSubmitResponseDTO();
            if (StringUtils.isNotBlank(responseContent)) {
                submitResponse = JSONObject.parseObject(responseContent, HolderBankInfoSubmitResponseDTO.class);
            }
    
            if (submitResponse == null) {
                baseResult.setRet(BaseResult.SYS_ERROR);
                baseResult.setMsg("上传接口返回为空");
                baseResult.validate();
            }
            if("success".equals(submitResponse.getFlag())){
                resultMap.put("fileNo",submitResponse.getDefmap().getFileNo());
            }else{
    
                baseResult.setRet(BaseResult.SYS_ERROR);
                baseResult.setMsg(submitResponse.getMsg().toString());
                baseResult.validate();
            }

        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            try {
                // 关闭连接,释放资源
                if (response != null) {
                    response.close();
                }
                if (httpClient != null) {
                    httpClient.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }

        }

        return resultMap;
    }

```
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个使用Java中的HttpURLConnection进行POST请求的示例: ```java import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; public class HttpPostExample { public static void main(String[] args) { try { // 设置POST请求的URL地址和参数 String url = "http://example.com/api"; String params = "name=" + URLEncoder.encode("John", StandardCharsets.UTF_8) + "&age=" + URLEncoder.encode("25", StandardCharsets.UTF_8); // 创建HttpURLConnection对象并设置请求方法和参数 HttpURLConnection con = (HttpURLConnection) new URL(url).openConnection(); con.setRequestMethod("POST"); con.setDoOutput(true); con.setRequestProperty("Content-Length", Integer.toString(params.length())); // 提交POST请求参数 con.getOutputStream().write(params.getBytes(StandardCharsets.UTF_8)); // 解析返回的结果 BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); String line; StringBuilder response = new StringBuilder(); while ((line = in.readLine()) != null) { response.append(line); } in.close(); // 输出结果 System.out.println(response.toString()); } catch (Exception e) { System.out.println("Error: " + e.getMessage()); } } } ``` 这个示例中,我们使用了HttpURLConnection对象来创建POST请求,设置请求的URL地址和参数,并将参数以字节流的形式提交到服务器。最后,我们输出服务器的响应结果。 请注意,这个示例只是说明了如何使用Java进行POST请求,并不代表特定的业务场景,实际业务场景可能需要更复杂的逻辑和处理流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值