Ich verwende Spring MVC und dies ist meine Methode:
/**
* 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;
}
}
}
Ich muss die Sitzungs-ID im Postboten und auch die Datei übergeben. Wie kann ich das machen?
quelle
POST
? Was ist mitPUT
?String
immer. Warum wird es nicht meinem DTO zugeordnet?@PostMapping ( value = "/byImageFile", consumes = { "multipart/form-data" }) public ResponseEntity<?> postMap( @RequestPart ( "imageFile") MultipartFile imageFile, @RequestPart ( "fieldsToExtract") RequestDto requestDto )
Ich bin in diesem Fall überhaupt nicht in der Lage, die Anfrage vom Postboten zu sendenRequestDto
automatisch zugeordnet. Ich nahm es als Zeichenfolge, analysierte esJson
und ordnete esRequestDto
explizit zu.Der fehlende visuelle Leitfaden
Sie müssen zuerst das fast unsichtbare Dropdown-Menü Hellgrau auf Weiß finden, für
File
das sich der magische Schlüssel befindet, mit dem dieChoose Files
Schaltfläche entsperrt wird .Nachdem Sie wählen
POST
, dann wählenBody->form-data
, dann den Datei - Drop - Down finden, und dann wählen Sie ‚Datei‘, erst dann wird die Schaltfläche ‚Dateien auswählen‘ magisch erscheinen:quelle
Vielleicht könnten Sie es so machen:
quelle
So was :
Body -> Formulardaten -> Datei auswählen
Sie müssen "Datei" anstelle von "Name" schreiben
Sie können JSON-Daten auch aus dem Feld Body -> raw senden. (Fügen Sie einfach die JSON-Zeichenfolge ein.)
quelle
quelle
Wenn Sie wie Hochladen Datei in mehrteiliger Formulardaten und senden mit json Daten (DTO - Objekt) in demselben POST anfordern
Holen Sie sich Ihr JSON-Objekt als String in Controller und lassen Sie es durch Hinzufügen dieser Zeile deserialisieren
quelle
Wählen Sie unter [SHOW COLUMNS] die Option [Content Type] und setzen Sie den Inhaltstyp von "application / json" auf den Parameter json text.
quelle
Wenn jemand brauchte:
Körper -> Formulardaten
Feldnamen als Array hinzufügen
quelle
Wenn jemand JSON-Daten im Formulardatenformat senden möchte, muss er nur die Variablen wie folgt deklarieren
Briefträger:
Wie Sie sehen, wird der Beschreibungsparameter im Basis-JSON-Format vorliegen.
quelle
Ich musste beide übergeben: eine Datei und eine Ganzzahl. Ich habe es so gemacht:
musste eine Datei zum Hochladen übergeben: tat es gemäß Sumits Antwort.
Anfragetyp: POST
Körper -> Formulardaten
Geben Sie unter der Überschrift KEY den Namen der Variablen ein ('Datei' in meinem Backend-Code).
im Backend:
file = request.files['file']
Neben "Datei" befindet sich ein Dropdown-Feld, in dem Sie zwischen "Datei" und "Text" wählen können. Wählen Sie "Datei" und unter der Überschrift " WERT" wurde "Dateien auswählen " angezeigt. Klicken Sie darauf, um ein Fenster zur Auswahl der Datei zu öffnen.
2. benötigt, um eine ganze Zahl zu übergeben:
ging zu:
Params
eingegebene Variablenname (zB: id) unter KEY unter: und seinem Wert (zB 1) VALUE
im Backend:
Hat funktioniert!
quelle
Verwenden Sie den folgenden Code auf der Seite der Federauflage:
quelle
Für jeden Formulardatenschlüssel, den Sie für den Inhaltstyp festlegen können, befindet sich rechts eine Postbotenschaltfläche zum Hinzufügen der Spalte Inhaltstyp, und Sie müssen keinen JSON aus einer Zeichenfolge in Ihrem Controller analysieren.
quelle
Wenn Sie eine
PUT
Anfrage stellen möchten , tun Sie einfach alles alsPOST
Anfrage, aber fügen Sie_method
=>PUT
zu Ihrenform-data
Parametern hinzu.quelle
Die Art und Weise, wie mehrere Part-Daten gesendet werden, die eine Datei mit den JSON-Daten enthalten, ist die folgende: Wir müssen den Inhaltstyp der jeweiligen JSON-Schlüsselfelder auf der Registerkarte Postman Body wie folgt auf 'application / json' setzen:
Dieses Linkbild informiert Sie über das Senden des Bildes mit JSON-Daten
quelle
Wenn Sie Cookies verwenden, um die Sitzung aufrechtzuerhalten, können Sie Interceptor verwenden , um Cookies vom Browser an den Postboten weiterzugeben .
Zum Hochladen einer Datei können Sie auch die Registerkarte Formulardaten unter der Registerkarte Körper des Postboten verwenden. Dort können Sie Daten im Schlüsselwertformat bereitstellen und für jeden Schlüssel den Wert des Textes / der Datei auswählen. Wenn Sie den Dateityp auswählen, wird die Option zum Hochladen der Datei angezeigt.
quelle
Geben Sie hier die Bildbeschreibung ein
rest controller [service class applicationinitializer class für mehrteilige con [postman pic] 2 fig
quelle