Skip to content

Commit 5d1dc58

Browse files
Бочарова Дарья МихайловнаБочарова Дарья Михайловна
authored andcommitted
Pull request #53: fix upload file multipartBody
Merge in SPM/gigachat-java-sdk from bugfix/ihubvb-413 to master * commit '4161ce51e1ee7ec211a855b31e2946d58b79ee33': fix upload file multipartBody
2 parents 0326642 + 4161ce5 commit 5d1dc58

File tree

4 files changed

+25
-17
lines changed

4 files changed

+25
-17
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ GigaChat — это Java-библиотека для работы с [REST API G
2424
### Gradle
2525

2626
```kotlin
27-
implementation("chat.giga:gigachat-java:0.1.6")
27+
implementation("chat.giga:gigachat-java:0.1.7")
2828
```
2929

3030
### Maven
@@ -33,7 +33,7 @@ implementation("chat.giga:gigachat-java:0.1.6")
3333
<dependency>
3434
<groupId>chat.giga</groupId>
3535
<artifactId>gigachat-java</artifactId>
36-
<version>0.1.6</version>
36+
<version>0.1.7</version>
3737
</dependency>
3838
```
3939

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ java {
1010

1111
allprojects {
1212
group = "chat.giga"
13-
version = "0.1.6"
13+
version = "0.1.7"
1414

1515
repositories {
1616
mavenCentral()

gigachat-java/src/main/java/chat/giga/client/BaseGigaChatClient.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ protected HttpRequest createUploadFileHttpRequest(UploadFileRequest request) {
136136
.header(HttpHeaders.USER_AGENT, USER_AGENT_NAME)
137137
.header(HttpHeaders.CONTENT_TYPE, MediaType.MULTIPART_FORM_DATA + "; boundary=" + boundary)
138138
.header(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON)
139-
.body(requestBody.toString().getBytes(StandardCharsets.UTF_8));
139+
.body(requestBody);
140140

141141
authClient.authenticate(builder);
142142

gigachat-java/src/main/java/chat/giga/util/FileUtils.java

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,27 @@
55
@UtilityClass
66
public class FileUtils {
77

8-
public StringBuilder createMultiPartBody(byte[] file, String boundary, String purpose, String contentType,
9-
String fileName) {
10-
var requestBody = new StringBuilder();
11-
requestBody.append("--").append(boundary).append("\r\n");
12-
requestBody.append("Content-Disposition: form-data; name=\"purpose\"\r\n\r\n");
13-
requestBody.append(purpose).append("\r\n");
14-
requestBody.append("--").append(boundary).append("\r\n");
15-
requestBody.append("Content-Disposition: form-data; name=\"file\"; filename=\"").append(fileName)
16-
.append("\"\r\n");
17-
requestBody.append("Content-Type: ").append(contentType).append("\r\n\r\n");
18-
requestBody.append(new String(file)).append("\r\n");
19-
requestBody.append("--").append(boundary).append("--").append("\r\n");
8+
public byte[] createMultiPartBody(byte[] fileBytes, String boundary, String purpose, String mimeType,
9+
String fileName) {
2010

21-
return requestBody;
11+
StringBuilder bodyBuilder = new StringBuilder();
12+
bodyBuilder.append("--").append(boundary).append("\r\n")
13+
.append("Content-Disposition: form-data; name=\"file\"; filename=\"").append(fileName).append("\"\r\n")
14+
.append("Content-Type: ").append(mimeType).append("\r\n\r\n");
15+
16+
byte[] bodyStart = bodyBuilder.toString().getBytes();
17+
bodyBuilder = new StringBuilder();
18+
bodyBuilder.append("\r\n--").append(boundary).append("\r\n")
19+
.append("Content-Disposition: form-data; name=\"purpose\"\r\n\r\n")
20+
.append(purpose).append("\r\n")
21+
.append("--").append(boundary).append("--\r\n");
22+
byte[] bodyEnd = bodyBuilder.toString().getBytes();
23+
24+
byte[] multipartBody = new byte[bodyStart.length + fileBytes.length + bodyEnd.length];
25+
System.arraycopy(bodyStart, 0, multipartBody, 0, bodyStart.length);
26+
System.arraycopy(fileBytes, 0, multipartBody, bodyStart.length, fileBytes.length);
27+
System.arraycopy(bodyEnd, 0, multipartBody, bodyStart.length + fileBytes.length, bodyEnd.length);
28+
29+
return multipartBody;
2230
}
2331
}

0 commit comments

Comments
 (0)