使用客户端 Java 代码进行 Spring boot 分段文件上传

2023-12-12

我在 Spring Boot 中编写了一个安静的 Web 服务来接收该文件。

@RequestMapping(value = "/upload", method = RequestMethod.POST)
@ResponseBody
public void uploadFile(@RequestParam("file") MultipartFile uploadfile) {
    System.out.println("filename: " + uploadfile.getName());
}

我们怎样才能将文件从客户端 java 代码上传到 Web 服务。而不是 AJAX 调用或 HTML 页面表单多部分请求?

下面的代码使用 JSON 对象调用 Web 服务。像这样我想接收上面写的网络服务中的文件。

void clientRequest(String server_url, JSONObject fileObj){

  try {

    URL url = new URL(server_url);
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    conn.setDoOutput(true);
    conn.setRequestMethod("POST");
    conn.setRequestProperty("Content-Type", "application/json");

    OutputStream os = conn.getOutputStream();
    os.write(fileObj.toString().getBytes());
    os.flush();

    BufferedReader br = new BufferedReader(new InputStreamReader(
            (conn.getInputStream())));

    String output;
    System.out.println("Output from Server .... \n");
    while ((output = br.readLine()) != null) {
        logger.info("output :: " + output);
    }

    conn.disconnect();

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

你可以使用 Spring 的HttpEntity随着ByteArrayResource要上传文件,这里是一个示例:

MultiValueMap<String, Object> data = new LinkedMultiValueMap<String, Object>();
ByteArrayResource resource = new ByteArrayResource(file.getBytes()) {
    @Override
    public String getFilename() {
        return file.getName();
    }
};
data.add("file", resource);

HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setContentType(MediaType.MULTIPART_FORM_DATA);

HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<MultiValueMap<String, Object>>(data, requestHeaders);

final ResponseEntity<<SomeClass>> responseEntity = restTemplate.exchange(<url>, 
        HttpMethod.POST, requestEntity, new ParameterizedTypeReference<SomeClass>(){});

SomeClass result = responseEntity.getBody();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用客户端 Java 代码进行 Spring boot 分段文件上传 的相关文章

随机推荐

  • 支持动态过滤的GWT表

    这个问题类似于支持排序 滚动和过滤的 GWT 表 不过 我更喜欢开源 并且我正在寻找快速的性能 我想要一种对行执行动态过滤的好方法 SmartGWT 的自适应滤波器看起来很有趣 http www smartclient com smartg
  • 如何更改 UIPicker 颜色? iPhone

    我观察到 UIPicker 始终保持黑色 有什么方法可以改变选择器及其选择指示器的颜色吗 谢谢你帮助我 我假设您想要更改的只是选择器边框的颜色 而不是用户交互的中心区域的颜色 在这种情况下 请执行以下操作 创建 4 个 覆盖 UIView
  • 创建类链接错误

    我正在使用 Dev C 5 2 0 1 我举了一个如何将类放入网站的另一个文件中的示例 但它导致了错误 在文件 class h 中我有 class MyClass public void foo int bar 在文件 class cpp
  • 如何安排作业在 Hangfire 中的特定日期运行

    Hangfire io 支持对重复作业进行类似 CRON 的调度 但是我如何指定特定作业应在特定日期 时间运行一次 例如作业应该在 2016 年 6 月 4 日 16 22 运行 并且仅在该特定时间点运行 提出同一问题的类似方法可能是 所描
  • 使用密码对一组文件进行打包 (WinRAR)

    我会尽力让它尽可能短 我正在寻找一个 bat 文件来 rar 和密码文件夹 其中包含文件 但问题比我想象的要棘手一些 每个文件夹中可以包含 1 到 400 个文件 我有两个 txt文件 一个具有所需数量的 rar 文件名 一个具有所需数量的
  • 如何在 Rust 中创建一个具有需要生命周期的特征的通用函数?

    我正在尝试编写一个与数据库一起使用并代表可以存储的内容的特征 为此 该特征继承自其他特征 其中包括serde Deserialize trait trait Storable lt de gt Serialize Deserialize l
  • TableAdapters SQL 注入

    您好 我正在使用一个数据集 在该数据集中我有一个表适配器 在我的表适配器中 我使用存储过程作为查询 如果我使用以下行通过表适配器插入表单数据 是否可以安全地防止 SQL 注入 谢谢 UserDataSetTableAdapters User
  • 初始化控制器和 FXML 链接控制器之间的区别?

    直到最近我还不知道你可以设置控制器fx controller in the FXML文件所以我依赖FXMLLoader s setController来管理链接 那么 是否有任何理由像特定情况一样使用一个而不是另一个overrideable
  • 在Python中计算XMX^T对角线的快速方法

    我需要在没有 for 循环的情况下计算 XMX T 的对角线 或者换句话说 替换以下 for 循环 X nump random randn 10000 100 M numpy random rand 100 100 out numpy ze
  • 如何使用javascript显示jquery页面(在div内)?

    这是我的问题 我调用这个方法 它的作用是 使用 jQuery 在服务器上发布一些数据 我想使用从服务器收到的结果显示页面 我的页面index html div other page content div a class bluebutto
  • LetsEncrypt 根证书过期会破坏 Azure Function Node 应用程序

    我有一个作为 Azure 函数运行的节点应用程序 每 60 秒它会进行多次 Web API 调用 其中一个 Web API 的 SSL 证书由 LetsEncrypt R3 签名 2021 年 9 月 30 日 根证书过期 https le
  • C# 停止BackgroundWorker

    我对后台工作人员有疑问 我在后台工作人员中有无限循环 我怎样才能阻止它 将其更改为非无限循环 The BackgroundWorker具有内置的取消支持 取消后台工作人员调用BackgroundWorker CancelAsync 您还需要
  • opencv:无法解析的外部符号

    我知道这个问题是all over the place 但将库目录添加到项目属性的魔杖对我来说仍然不起作用 我跟着Visual Studio 教程 2013年我这里有 和环境变量设置 for opencv 3 0 测试版 这是相同的代码Tes
  • Jquery 中 .load() 和 .ajax() 函数之间的区别[重复]

    这个问题在这里已经有答案了 可能的重复 id load 和 ajax 之间的区别 我在代码中使用 ajax 进行异步调用 在阅读有关 load 的内容时 它看起来好像做了同样的事情 这两种方法之间有什么区别 ajax 是最可配置的 您可以在
  • 布局问题:自动增长标签(SWT)

    我正在使用 GridLayout 尝试使标签自动增长而不隐藏其任何内容 这是一个要测试的简单代码 每次按下按钮时 标签文本都会变大 但只有在水平调整窗口大小后 我才能获得正确的布局 有没有什么方法可以解决这个问题而无需调整窗口大小 我想我已
  • java.lang.ClassNotFoundException: org.springframework.boot.SpringApplication Maven

    我正在尝试创建一个 spring mvc 应用程序 这是我的 pom xml
  • Ruby 内部展平(数组的数组)

    我有一个如下所示的数组 0 a 2 b 3 c 4 d 5 e 6 f 7 g 也就是说 元素数组可以是 1 2 元素数组 或 2 2 元素数组的数组 我试图找到一种优雅的方法来 展平 这个数组 以便 2 的元素扩展到根级元素 在这个例子中
  • 文件未通过 PHP 上传到本地主机

    我无法使用 PHP 将文件上传到本地主机 我创建了简单的 html 表单和 php 脚本 但是我收到这些错误消息 导入 html
  • 如何使用 Boost 解压压缩数据向量?

    我有一个包含 zlib 压缩 压缩 数据的向量 我想用Boost解压它filtering istream 他们的网站上只有一个示例 它对数据流进行操作 而不是我拥有的向量 vector
  • 使用客户端 Java 代码进行 Spring boot 分段文件上传

    我在 Spring Boot 中编写了一个安静的 Web 服务来接收该文件 RequestMapping value upload method RequestMethod POST ResponseBody public void upl