HttpURLConnection 发起post请求 带文件参数等

HttpURLConnection 发起post请求,使用form-data 方式,并带着图片文件信息和其他参数进行传递

public static String sendPostCdn(String path,String type,String remark){
        String requestURL = "https://www.接口地址.com/api/img/upload"; // 上传接口 URL
        File file = new File(path); // 图片文件路径
        try {
            URL url = new URL(requestURL);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("POST");
            connection.setDoOutput(true);
            connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY);

            try (OutputStream outputStream = connection.getOutputStream();
                 DataOutputStream writer = new DataOutputStream(outputStream)) {

                // 发送文件数据
                writer.writeBytes("--" + BOUNDARY + LINE_FEED);
                writer.writeBytes("Content-Disposition: form-data; name=\"file\"; filename=\"" + file.getName() + "\"" + LINE_FEED);
                writer.writeBytes("Content-Type: image/jpeg" + LINE_FEED); // 根据你的文件类型修改
                writer.writeBytes(LINE_FEED);

                try (FileInputStream fileInputStream = new FileInputStream(file)) {
                    byte[] buffer = new byte[4096];
                    int bytesRead;
                    while ((bytesRead = fileInputStream.read(buffer)) != -1) {
                        writer.write(buffer, 0, bytesRead);
                    }
                }

                writer.writeBytes(LINE_FEED);
                writer.writeBytes("--" + BOUNDARY + "--" + LINE_FEED);

                // 发送其他表单参数(可选)
                writer.writeBytes("--" + BOUNDARY + LINE_FEED);
                writer.writeBytes("Content-Disposition: form-data; name=\"type\"" + LINE_FEED);
                writer.writeBytes(LINE_FEED);
                writer.writeBytes(type + LINE_FEED);

                writer.writeBytes("--" + BOUNDARY + LINE_FEED);
                writer.writeBytes("Content-Disposition: form-data; name=\"remarks\"" + LINE_FEED);
                writer.writeBytes(LINE_FEED);
                writer.writeBytes(remark + LINE_FEED);

                writer.writeBytes("--" + BOUNDARY + "--" + LINE_FEED);
                writer.flush();
            }

            // 处理响应
            int responseCode = connection.getResponseCode();
            System.out.println("Response Code: " + responseCode);
            // 可以读取响应内容
            try (java.io.InputStream is = connection.getInputStream()) {
                java.util.Scanner scanner = new java.util.Scanner(is).useDelimiter("\\A");
                String response = scanner.hasNext() ? scanner.next() : "";
                System.out.println("Response Body: " + response);
                JSONObject parse = JSONObject.parse(response);
                System.out.println(parse);
                if(!parse.getString("code").equals("200")){
                    return "";
                }
                String data = parse.getString("data");
                JSONObject parse1 = JSONObject.parse(data);
                file.delete();
                return parse1.getString("path");
            }

        } catch (Exception e) {
            e.printStackTrace();
        }

        return "";
    }

使用方法

String filePath = "H:\\20240826141538.png"; // 文件路径
String result = sendPostCdn(filePath);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金错刀丨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值