Facteur : La demande de la partie "fichier" n'est pas présent
J'ai voulu télécharger une image à mon API Rest par facteur. Je suis à l'aide de spring boot cadre. Voici la capture d'écran :
J'ai aussi n'ont pas fixé de tous les en-têtes que j'ai trouvé dans d'autres débordement de pile réponses qu'il a donné multipart limite d'erreur.
Maintenant, ci-dessous mon code de contrôleur :
package com.practice.rest.assignment1.controller;
import java.io.IOException;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import com.practice.rest.assignment1.model.Product;
import com.practice.rest.assignment1.service.CatalogueService;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
@RestController
@RequestMapping("/CatalogueController/")
public class CatalogueController{
@Autowired
private CatalogueService catalogueService;
@RequestMapping(value = "addProduct", method = RequestMethod.POST , consumes = "multipart/form-data")
public Product addProduct(@RequestParam String productJson, @RequestParam MultipartFile file) throws JsonParseException, JsonMappingException, IOException {
Product product = new ObjectMapper().readValue(productJson, Product.class);
byte[] mediaBytes = file.getBytes();
product.setImage(mediaBytes);
return catalogueService.saveInDb(product);
}
}
Maintenant, je suis prise d'un objet Produit qui consiste en interne une image définie comme byte[] tableau. Je prends cela comme une chaîne de caractères et l'image séparément en tant que fichier en plusieurs parties.
Ci-dessous est ma classe de produit attributs définis :
private Long pId;
private String model;
private String brand;
private byte[] image; //This is where I want the image to save
private Long price;
private String currency;
private String transmissionType;
private String fuelType;
Depuis , je suis à l'aide de spring boot , ici est ma classe Principale :
package com.practice.rest.assignment1;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
L'erreur sur le facteur que je reçois est :
{
"timestamp": 1478611635977,
"status": 400,
"error": "Bad Request",
"exception": "org.springframework.web.multipart.support.MissingServletRequestPartException",
"message": "Required request part 'file' is not present",
"path": "/CatalogueController/addProduct"
}
Où suis-je mal ?
OriginalL'auteur Breaking Benjamin | 2016-11-08
Vous devez vous connecter pour publier un commentaire.
Je pense que le problème réside dans le JSON paramètre que vous envoyez. Dans le postier vous n'avez pas besoin de mettre le début et la fin " pour représenter un paramètre string.
Et aussi, si vous utilisez de début et de fin " à l'intérieur de l'JSON( moyenne pour objet JSON les propriétés de la clé et de la valeur), vous devez utiliser '(guillemets simples).
OriginalL'auteur Lipu
Essayez de supprimer
'Content-Type: multipart/form-data...'
, la section de l'en-tête. Il a résolu pour moi.OriginalL'auteur Kenadet
Pour moi, il a travaillé pour définir ces variables dans application.propriétés:
code
@ConfigurationProperties("stockage") public class StorageProperties { /** * l'emplacement du Dossier de stockage des fichiers */ private String emplacement = "votre chemin/chemin/absolu"; public String getLocation() { return emplacement; } public void setLocation(String emplacement) { this.lieu = lieu; } }code
Dans le Springboot Exemple: printemps.io/guides/gs/upload-de-fichiers Elle a été la suivante:
spring.servlet.multipart.max-file-size=128KB
spring.servlet.multipart.max-request-size=128KB
spring.http.multipart.enabled=false
Changer le enabled=false à true (pour vous répondre) fixe le fichier " n'est pas présent problème pour moi. Thx!OriginalL'auteur Radim Burget
Salut @Breaking Benjamin, j'ai fait un même démo, et il y a mon post de demande de copie:
Et, mon upload contrôleur est écrit comme ceci:
Dans ma console, le param
a
succès de la sortie:Même si j'utilise une chaîne json pour envoyer la demande à nouveau:
Il semble que votre code est ok, mais avez-vous essayez d'utiliser
curl
pour envoyer une demande de nouveau, peut-être que c'est parce que vous avez mauvaise utilisation du facteur.OriginalL'auteur BeeNoisy
Pour moi la mise à jour de mon application.propriétés par la mise à jour de la variable travaillé
printemps.http.multipart.enabled=true
Mon service est
OriginalL'auteur Bhasker The Navigator