当前位置: 首页 > news >正文

笔记:将一个文件服务器上的文件(一个返回文件数据的url)作为另一个http接口的请求参数

笔记:将一个文件服务器上的文件(一个返回文件数据的url)作为另一个http接口的请求参数

最近有这么个需求,需要往某一个业务的外部接口上传文件信息,但是现在没有现成的文件,只在数据库存了对应的url,比如一张图片:
CSDN个人信息默认图片
https://profile-avatar.csdnimg.cn/default.jpg!3

现在我有这么一个地址,返回的是二进制流数据,通常http传文件数据的话,需要通过一个具体的文件,即需要先下载文件。

在此感谢百度告诉我还有临时文件的创建方式,我也不知道百度ai从哪里参考的代码,在此同步感谢。

在这里使用http请求用的hutool的工具类:

<!-- hutool 的依赖配置-->
<dependency><groupId>cn.hutool</groupId><artifactId>hutool-bom</artifactId><version>5.8.18</version>
</dependency>

下面,附上具体的实现代码逻辑:

import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.http.HttpUtil;
import java.io.File;
import java.io.IOException;public class UploadFile {public static void main(String[] args) throws IOException {//获取url对应的文件二进制流数据//源文件地址(可以在网页上任意找一个图片地址,我这里用的CSDN个人信息默认图片)String fileUrl = "https://profile-avatar.csdnimg.cn/default.jpg!3";String fileName = "CSDN个人信息默认图片.jpg";//获取文件数据HttpResponse response = HttpUtil.createGet(fileUrl).execute();if(response.isOk()) {byte[] bytes = response.bodyBytes();//如果返回有数据,则上传if(bytes != null && bytes.length > 0){//创建临时文件int index = fileName.lastIndexOf(".");String prefix = fileName.substring(0, index);//CSDN个人信息默认图片String suffix = fileName.substring(index);//.jpg//生成空临时文件File tempFile = File.createTempFile(prefix, suffix);tempFile.deleteOnExit();//程序结束时自动删除文件//写入数据FileUtil.writeBytes(bytes, tempFile);//需要文件参数的http接口String url = "http://xxxxx/xxxxx";String result = HttpUtil.createPost(url).contentType("multipart/form-data").form("name", fileName).form("file", tempFile).execute().body();// 打印响应内容System.out.println(response.body());}}}
}

重点其实就三步:
1、通过接口获取到文件url对应的二进制数据。
2、通过生成临时文件,将返回的二进制数据写入临时文件。
3、将临时文件作为参数发送http请求。

相关文章:

  • DDoS攻击应对指南:提升网站安全性的有效策略
  • 【Django ORM】三万字了解Django ORM的基本概念和基本使用
  • 华为云Flexus+DeepSeek征文 | 基于ModelArts Studio和Cherry Studio快速构建午餐管家助手
  • CentOS7挂载hgfs文件夹(VMware 共享文件夹)及网卡的自启动。
  • 【分治】归并排序:递归版 非递归版
  • Python后端框架新星Robyn:性能与开发体验的双重革命
  • 01. Qt介绍及Qt开发环境搭建(2025.05最新官网下载方式)
  • mysql可重复读隔离级别下的快照读和当前读
  • 物理定律的数学结构基础及AI推理
  • 六:操作系统虚拟内存之抖动
  • 如何在Java中进行PDF合并
  • 表格单元格多行文本溢出写法
  • 编程速递-RAD Studio 12.3 Athens五月补丁:May Patch Available
  • 【二刷力扣】【力扣热题100】今天的题目是:两数之和
  • 今日打卡,LeetCode第三题(源码详解分享)
  • 写实交互数字人在AI招聘中的应用方案
  • brepgen 源码 笔记2
  • Day 28 训练
  • asp.net core 添加 EntityFrame
  • 每日算法刷题计划day13 5.22:leetcode不定长滑动窗口最短/最小1道题+求子数组个数越长越合法2道题,用时1h
  • 哪些h5网站比较好/西安百度推广开户运营
  • 广告公司微网站建设/网络营销的重要性
  • 学校网站下载/老域名
  • 建设网站需求文档/上海搜索优化推广
  • 代理推广怎么做/搜索引擎排名优化seo课后题
  • 素马杭州网站设计介绍/google chrome 网络浏览器