我将调用一个POST REST API,它在其主体中接受一个文件。
如果我发送几个KB的文件(使用下面的代码),大约需要300毫秒。如果我发送大约5 GB的文件,它会抛出内存异常。
是否有一种可能的方法可以按顺序将文件作为块发送?目前,我们正在避免任何并行处理。
非常感谢您在代码或参考方面的任何帮助。
public static Resource getTestFile() throws IOException {
Path testFile = Paths.get(FILE_PATH);
System.out.println("Creating and Uploading Test File: " + testFile);
return new FileSystemResource(testFile.toFile());
}
private static void uploadSingleFile() throws IOException {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
MultiValueMap<String, Object> body = new LinkedMultiValueMap<>();
body.add("file", getTestFile());
HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(body, headers);
String serverUrl = "http://localhost:8080/place";
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<DataTransportResponse> response = restTemplate.postForEntity(serverUrl, requestEntity,
DataTransportResponse.class);
System.out.println("Response code: " + response.getStatusCode());
}
spring:
application:
name: file-manager
servlet:
multipart:
max-file-size: 20480MB
max-request-size: 2048MB
application:
seal:
id: 104912
我把它解决了-
MultiValueMap<String, String> fileMap = new LinkedMultiValueMap<>();
fileMap.add(HttpHeaders.CONTENT_DISPOSITION, contentDisposition.toString());
你可以试试这条路
@Bean(name = "multipartResolver")
public CommonsMultipartResolver multipartResolver() {
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
multipartResolver.setMaxUploadSize(54525952); //...specify your size of file (20971520 - 20 MB) (54525952 - 52 MB)
return multipartResolver;
}
我从这个链接帖子中找到了这个参考。希望对你有帮助。
在我的Spring Boot应用程序中,我需要将String值与MultipartFile一起作为传递。Controller在下面,我将MultipartFile转换为,然后在的帮助下将其传递给DAO Controller。 来自Angular的请求将首先命中Upload Controller,然后UploadController是客户端(Java),它将使用基URL调用服务器svs-ba-dao
我有两台服务器,其中服务器A向服务器B发送文件。在服务器B上,我有一个接收给定类别文件的endpoint。这是我需要将文件发送到的endpoint的签名: 现在我在用RESTTemplateExchange创建这样的请求时遇到了麻烦。在服务器A上,我试图逐个发送文件(服务器B上的endpoint需要接受多部分数组,因为它也在其他地方使用)。这就是我所尝试的: 这几乎工作,唯一的问题是,在服务器B从
问题内容: 我有一个网络服务电话,可以通过该电话上传zip文件。然后将文件转发到另一个服务以进行存储,解压缩等。目前,文件已存储在文件系统中,然后构建了FileSystemResource。 我可以使用ByteStreamResource来节省时间(转发之前不需要在磁盘上保存文件),但是为此,我需要构建一个字节数组。如果文件很大,我将收到“ OutOfMemory:java堆空间”错误。 使用Re
使用RESTTemplate转发文件而不得到OutOfMemory错误的解决方案吗?
希望Spring大师能在这方面帮助我,Iam开发了一个多web服务应用程序,所有这些web服务都基于一个名为based-server的Jar,它得到了所有可以在任何需要的地方继承的基类。因此,在这个基础服务器项目中,我有一个BaseClient类,它有一个spring RestTemplate属性。当我试图在实际实现的web服务类中使用这个客户机(原因是继承)时,当我试图执行POST请求时,它会给
我正在尝试使用Spring RestTemplate发布数据,如下所示: 你能提供我一个简单的例子来实现我想要的。