绘制一张图片,并将这张图上传到远程服务器【即对接远程服务器的文件上传接口】,不调用feign。从指定url中获图像数据,并上传到远程文件服务器【不调用feign】

文章介绍了如何使用Java和OkHttp库,不借助Feign,绘制图片后将其转换为字节并上传到远程服务器的文件上传接口。涉及到了BufferedImage、Graphics2D的使用以及MultipartBody构建请求体。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

绘制一张图片,并将这张图上传到远程服务器【即对接远程服务器的文件上传接口】,不调用feign

<!-- Maven 依赖 -->
<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>4.9.1</version>
</dependency>
 public static void main(String[] args) {
	 image();
 }    

 public static void image(){
        try {
            BufferedImage image = new BufferedImage(800, 600, BufferedImage.TYPE_INT_RGB);
            // 在这里进行图像绘制或处理
            // 获取图像的 Graphics2D 对象
            Graphics2D g2d = image.createGraphics();
            // 设置绘制颜色为红色
            g2d.setColor(Color.RED);
            // 绘制一条线条
            g2d.drawLine(0, 0, 800, 600);
            // 设置绘制颜色为蓝色
            g2d.setColor(Color.BLUE);
            // 绘制一个矩形
            g2d.fillRect(100, 100, 200, 150);
            // 释放资源
            g2d.dispose();

            // 将图像转换为字节数组
            byte[] imageData;
            try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
                ImageIO.write(image, "png", baos);
                imageData = baos.toByteArray();
            }

            // 创建 OkHttp 客户端
            OkHttpClient client = new OkHttpClient();

            // 创建请求体
            RequestBody requestBody = new MultipartBody.Builder()
                    .setType(MultipartBody.FORM)
                	//FormDataPart固定为file,fileName名称可以自定义
                    .addFormDataPart("file", "image6311x.png", RequestBody.create(MediaType.parse("image/png"), imageData))
                    .build();

            // 创建请求
            Request request = new Request.Builder()
                    .url("https://xxx.com/file/upload") // 远程服务器上传文件地址
                    .post(requestBody)
                    .build();

            // 发送异步请求
            try (Response response = client.newCall(request).execute()) {
                if (response.isSuccessful()) {
                    String responseData = response.body().string();
                    System.out.println("远程服务器返回的数据:" + responseData);
                } else {
                    System.out.println("图像上传失败,错误码:" + response.code());
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

从指定url中获图像数据,并上传到远程文件服务器【不调用feign】

<!-- Maven 依赖 -->
<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>4.9.1</version>
</dependency>
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import javax.imageio.ImageIO;

public class ImageDownloadExample {
    public static void main(String[] args) {
        String imageUrl = "https://example.com/image.jpg"; // 指定图像的 URL
        String uploadUrl = "https://example.com/upload"; // 远程文件服务器上传接口

        try {
            // 创建 URL 对象
            URL url = new URL(imageUrl);
            // 打开连接并获取输入流
            try (InputStream inputStream = url.openStream()) {
                // 读取图像数据
                BufferedImage image = ImageIO.read(inputStream);

                // 在这里对图像进行处理【也可以不处理】
                // ...

                // 上传图像到远程文件服务器
                uploadImage(image, uploadUrl,"20231106-01.jpg");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
	/**
	   将BufferedImage中的数据,调用接口上传到文件服务器,并返回数据
	   @param uploadUrl 上传文件的接口地址:http或https开头的
	*/
    private static void uploadImage(BufferedImage image, String uploadUrl,String fileName) {

        // 将图像数据转换为字节数组
        byte[] imageData;
        try (ByteArrayOutputStream baos = new ByteArrayOutputStream();){
            ImageIO.write(image, "jpg", baos);
            imageData = baos.toByteArray();
        } catch (IOException e) {
            e.printStackTrace();
            return;
        }

        // 创建请求体
        RequestBody requestBody = new MultipartBody.Builder()
                .setType(MultipartBody.FORM)
                .addFormDataPart("file", fileName, RequestBody.create(MediaType.parse("image/jpeg"), imageData))
                .build();

        // 创建上传请求
        Request uploadRequest = new Request.Builder()
                .url(uploadUrl)
                .post(requestBody)
                .build();

        // 发送上传请求并获取响应
        try (Response response = client.newCall(uploadRequest).execute()) {
            if (response.isSuccessful()) {
                 String responseData = response.body().string();
                    System.out.println("远程服务器返回的数据:" + responseData);
            } else {
                System.out.println("图像上传失败,错误码:" + response.code());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值