当前位置: 首页 > 知识库问答 >
问题:

如何使用curl将CSV文件发布到spring restendpoint

严天逸
2023-03-14

我试图用java spring创建一个接受csv文件的restendpoint。

我的控制器如下所示:

package my.company.my.project.trms.controller;

import my.company.my.project.trms.controller.common.ControllerUrls.INBOX.CSV;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

@RestController
@RequestMapping(CSV.BASE)
public interface CsvController {

  @PostMapping(produces = "text/csv", consumes = "text/csv")
  public ResponseEntity create(@RequestBody MultipartFile file);
}
package my.company.my.project.trms.controller;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

@Slf4j
@RequiredArgsConstructor
@RestController
public class CsvControllerImpl implements CsvController {

  @Override
  public ResponseEntity create(MultipartFile file) {
    String message = "";
    return ResponseEntity.status(HttpStatus.OK).body(message);
  }
}
#!/bin/bash
curl -X POST "http://localhost:8791/api/public/v1/inboxes/csv" -H "accept: */*" -H "Content-Type: text/csv" --data-binary @/c/Users/Schilling/Desktop/Test.csv

将-vv选项添加到curl调用中会导致以下输出:

Note: Unnecessary use of -X or --request, POST is already inferred.
* Uses proxy env variable no_proxy == '192.168.99.100'
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 127.0.0.1:8791...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) port 8791 (#0)
> POST /api/public/v1/inboxes/csv HTTP/1.1
> Host: localhost:8791
> User-Agent: curl/7.65.3
> accept: */*
> Content-Type: text/csv
> Content-Length: 2036
> Expect: 100-continue
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 100
} [2036 bytes data]
* We are completely uploaded and fine
100  2036    0     0  100  2036      0    221  0:00:09  0:00:09 --:--:--     0* Mark bundle as not supporting multiuse
< HTTP/1.1 200
< X-Content-Type-Options: nosniff
< X-XSS-Protection: 1; mode=block
< Cache-Control: no-cache, no-store, max-age=0, must-revalidate
< Pragma: no-cache
< Expires: 0
< X-Frame-Options: SAMEORIGIN
< Content-Type: text/csv;charset=UTF-8
< Content-Length: 0
< Date: Fri, 15 Oct 2021 12:37:43 GMT
<
100  2036    0     0  100  2036      0    203  0:00:10  0:00:09  0:00:01     0
* Connection #0 to host localhost left intact

共有1个答案

梁浩
2023-03-14

我认为这应该按需要工作:根据代码,内容类型:multipart/form-data。

#!/bin/bash
curl -vv -F upload=@/c/Users/Schilling/Desktop/Test.csv "http://localhost:8791/api/public/v1/inboxes/csv"
 类似资料:
  • 问题内容: 我可能还差得远,但是我整个下午一直在尝试在本教程PHP框架教程中运行curlpost命令。我不明白的是PHP应该如何解释我的POST,它总是以空数组的形式出现。 (其中的斜线只是让我看起来不像是个白痴,而是我使用PHP 5.2在Windows上执行此操作,也曾在与Linux curl相同版本的Linux服务器上尝试过) 我必须缺少一些东西,因为它看起来很简单,帖子解释得不好,如果可以的

  • 我正在尝试使用curl向REST服务发布一个xml文件(utf-16编码)。REST服务需要“multipart/form-data”内容类型。 Curl脚本:Curl-k-i-h“content-type=multipart/form-data”-f“filename=@file.xml;type=text/xml”-x POST-u: 然而,我在运行脚本时得到500个内部服务器错误。 响应:<

  • 问题内容: 我使用Ubuntu并在其上安装了cURL。我想用cURL测试我的Spring REST应用程序。我在Java端编写了POST代码。但是,我想用cURL对其进行测试。我正在尝试发布JSON数据。示例数据如下: 我使用以下命令: 它返回此错误: 错误描述是这样的: 服务器拒绝了此请求,因为请求实体的格式不受请求方法()的请求资源支持。 Tomcat日志:“ POST / ui / weba

  • 问题内容: 我使用JSoup使用以下代码发布值: 现在我也要提交文件。就像带有文件字段的表单一样。这可能吗 ?如果比怎么? 问题答案: 从Jsoup 1.8.2(2015年4月13日)开始,通过新方法才支持此功能。 在旧版本中,不支持发送请求。最好的选择是为此使用一个值得使用的HTTP客户端,例如Apache HttpComponents Client 。最终,您可以获得HTTP客户端响应,以便可

  • 问题内容: 如何使用AngularJS发送POST请求?JSON部分是必需的,但文件不是必需的。我已经根据其他博客文章尝试过此方法,但是它不起作用。我收到一个 错误的请求400错误 。 200点正确答案将被添加 问题答案: 我已经用一个简单的Spring后端测试了您的代码,并且工作正常: 我已将您的客户端代码与angular v1.1.5一起使用: 请求看起来像这样(从Chrome控制台的“网络”

  • 输出为 所以,即使在我自己的服务器上,我也没有得到正确的数据,它是空数组。我想通过http://docs.shopify.com/api/customer#create使用json实现REST