Używam Spring MVC i to jest moja metoda:
/**
* Upload single file using Spring Controller.
*/
@RequestMapping(value = "/uploadFile", method = RequestMethod.POST)
public @ResponseBody ResponseEntity<GenericResponseVO<? extends IServiceVO>> uploadFileHandler(
@RequestParam("name") String name,
@RequestParam("file") MultipartFile file,
HttpServletRequest request,
HttpServletResponse response) {
if (!file.isEmpty()) {
try {
byte[] bytes = file.getBytes();
// Creating the directory to store file
String rootPath = System.getProperty("catalina.home");
File dir = new File(rootPath + File.separator + "tmpFiles");
if (!dir.exists()) {
dir.mkdirs();
}
// Create the file on server
File serverFile = new File(dir.getAbsolutePath() + File.separator + name);
BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(serverFile));
stream.write(bytes);
stream.close();
System.out.println("Server File Location=" + serverFile.getAbsolutePath());
return null;
} catch (Exception e) {
return null;
}
}
}
Muszę przekazać identyfikator sesji w listonoszu, a także plik. Jak mogę to zrobić?
java
json
spring-mvc
postman
Harikrishnan KN
źródło
źródło
POST
? O co chodziPUT
?String
zawsze. Dlaczego nie jest mapowany do mojego DTO?@PostMapping ( value = "/byImageFile", consumes = { "multipart/form-data" }) public ResponseEntity<?> postMap( @RequestPart ( "imageFile") MultipartFile imageFile, @RequestPart ( "fieldsToExtract") RequestDto requestDto )
W tym przypadku w ogóle nie mogę wysłać prośby od listonoszaRequestDto
automatycznie. Wziąłem to jako ciąg, przeanalizowałemJson
i zamapowałem goRequestDto
jawnie.Brakujący przewodnik wizualny
Najpierw musisz znaleźć prawie niewidoczne, bladoszare, białe menu, dla
File
którego jest magiczny klucz odblokowującyChoose Files
przycisk.Po dokonaniu wyboru
POST
, następnie wybierzBody->form-data
, a następnie znajdź listę rozwijaną Plik, a następnie wybierz „Plik”, tylko wtedy przycisk „Wybierz pliki” pojawi się magicznie:źródło
Może mógłbyś to zrobić w ten sposób:
źródło
Lubię to :
Body -> form-data -> wybierz plik
Musisz wpisać „plik” zamiast „nazwa”
Możesz także wysłać dane JSON z Body -> surowego pola. (Po prostu wklej ciąg JSON)
źródło
źródło
Jeśli potrzebujesz jak Upload pliku w multipart wykorzystując dane i wysłać formularz json danych (Object Dto) w samym POST Zamówienie
Pobierz swój obiekt JSON jako ciąg w kontrolerze i ustaw go w deserializacji, dodając ten wiersz
źródło
Wybierz [Content Type] z [SHOW COLUMNS], a następnie ustaw typ zawartości „application / json” na parametr tekstu json.
źródło
Jeśli ktoś potrzebował:
body -> form-data
Dodaj nazwę pola jako tablicę
źródło
Jeśli ktoś chce wysłać dane json w formacie form-data, wystarczy zadeklarować takie zmienne
Listonosz:
Jak widać, parametr opisu będzie miał podstawowy format json, w wyniku czego:
źródło
Musiałem przekazać oba: plik i liczbę całkowitą. Zrobiłem to w ten sposób:
potrzebne do przekazania pliku do przesłania: zrobiono to zgodnie z odpowiedzią Sumita.
Typ żądania : POST
Body -> form-data
pod nagłówkiem KEY wpisałem nazwę zmiennej („plik” w moim kodzie zaplecza).
w zapleczu:
file = request.files['file']
Obok „pliku” znajduje się menu rozwijane, w którym można wybrać „Plik” lub „Tekst”. Wybierz „Plik” i pod nagłówkiem WARTOŚĆ pojawiło się „Wybierz pliki”. Kliknięcie tego, co otworzyło okno do wyboru pliku.
2. potrzebne do przekazania liczby całkowitej:
poszedłem do:
Params
wpisano nazwę zmiennej (np .: id) pod KLUCZ i jej wartość (np .: 1) pod WARTOŚĆ
w zapleczu:
Pracowałem!
źródło
Użyj poniższego kodu po stronie podpórki sprężynowej:
źródło
Dla każdego klucza danych formularza można ustawić typ zawartości, po prawej stronie znajduje się przycisk listonosza, aby dodać kolumnę Content-Type, i nie musisz analizować json z ciągu wewnątrz kontrolera.
źródło
Jeśli chcesz złożyć
PUT
żądanie, zrób wszystko jakoPOST
żądanie, ale dodaj_method
=>PUT
do swoichform-data
parametrów.źródło
Sposób wysyłania danych mulitpart, które zawierają plik z danymi json, jest następujący, musimy ustawić typ zawartości odpowiednich pól klucza json na „application / json” na karcie treści listonosza, jak poniżej:
Ten obraz łącza zawiera informacje o wysyłaniu obrazu z danymi json
źródło
Jeśli używasz plików cookie do utrzymywania sesji, możesz użyć przechwytywacza, aby udostępnić pliki cookie z przeglądarki do listonosza.
Aby przesłać plik, możesz również użyć zakładki dane formularza pod zakładką treści na listonoszu, w której możesz podać dane w formacie klucz-wartość, a dla każdego klucza możesz wybrać typ tekstu / pliku wartości. po wybraniu typu pliku pojawiła się opcja przesłania pliku.
źródło
wprowadź opis obrazu tutaj
Reszta sterowania [klasy usługi klasy applicationinitializer do wieloczęściowego con [listonosz pic] 2, fig
źródło