Skip to content

Commit f532971

Browse files
committed
upload file with Open Feign
1 parent 8c7eb1e commit f532971

File tree

6 files changed

+78
-0
lines changed

6 files changed

+78
-0
lines changed

open-feign-example/.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,6 @@
11
/target/
2+
/.idea/
3+
/.settings/
4+
/.project/
5+
/.classpath/
6+
/open-feign-example.iml

open-feign-example/notes.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Hello. This a note.

open-feign-example/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@
1717
<artifactId>feign-core</artifactId>
1818
<version>8.18.0</version>
1919
</dependency>
20+
<dependency>
21+
<groupId>io.github.openfeign.form</groupId>
22+
<artifactId>feign-form</artifactId>
23+
<version>2.0.5</version>
24+
</dependency>
2025
<dependency>
2126
<groupId>com.netflix.feign</groupId>
2227
<artifactId>feign-jackson</artifactId>
@@ -29,5 +34,6 @@
2934
<version>4.8.1</version>
3035
<scope>test</scope>
3136
</dependency>
37+
3238
</dependencies>
3339
</project>
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.howtoprogram.repository.feign.upload;
2+
3+
4+
import feign.Headers;
5+
import feign.Param;
6+
import feign.RequestLine;
7+
import feign.Response;
8+
9+
import java.io.File;
10+
11+
12+
public interface FileUploadResource {
13+
14+
@RequestLine("POST /upload")
15+
@Headers("Content-Type: multipart/form-data")
16+
Response uploadFile(@Param("name") String name, @Param("file") File file);
17+
18+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.howtoprogram.repository.feign.upload;
2+
3+
import feign.Feign;
4+
import feign.Response;
5+
import feign.form.FormEncoder;
6+
import feign.jackson.JacksonEncoder;
7+
8+
import java.io.File;
9+
10+
public class UploadService {
11+
private static final String HTTP_FILE_UPLOAD_URL = "http://localhost:8080/v1";
12+
13+
14+
public boolean uploadFile(String fileName, File file) {
15+
16+
FileUploadResource fileUploadResource = Feign.builder()
17+
.encoder(new FormEncoder(new JacksonEncoder()))
18+
.target(FileUploadResource.class, HTTP_FILE_UPLOAD_URL);
19+
20+
Response response = fileUploadResource.uploadFile("Example file", file);
21+
return response.status() == 200;
22+
}
23+
24+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.howtoprogram.repository.feign.upload;
2+
3+
import com.howtoprogram.repository.feign.auth.AuthStatus;
4+
import com.howtoprogram.repository.feign.auth.RequestReponseService;
5+
import org.junit.Test;
6+
7+
import java.io.File;
8+
9+
import static org.junit.Assert.assertEquals;
10+
import static org.junit.Assert.assertNotNull;
11+
import static org.junit.Assert.assertTrue;
12+
13+
public class TestUploadService {
14+
15+
@Test
16+
public void testUploadFile() {
17+
UploadService uploadService = new UploadService();
18+
File file = new File("notes.txt");
19+
assertTrue(file.exists());
20+
assertTrue(uploadService.uploadFile("The optional file name",file));
21+
22+
}
23+
24+
}

0 commit comments

Comments
 (0)