簡體   English   中英

Spring Data Rest:如何使用請求正文發送多部分文件

[英]Spring Data Rest : how to send Multi-part file with request Body

我想構建一個用戶注冊 API,其中我需要用戶基本信息和他/她的個人資料圖片,所以我很困惑我該如何實現這一點! 我已經制作了一個控制器並請求了一個主體但是當我訪問這個 API 時,它給了我"Unsupported Media Type"的錯誤,當我將內容類型設置為multipart/form-data時,它給出了一個錯誤: the request was rejected because no multipart boundary was found

請幫助我如何在相同的請求中發送用戶信息和用戶照片

更新:控制器

@RequestMapping(method = RequestMethod.POST, value = "createRider")
public @ResponseBody ResponseEntity<?> createRider(
        @RequestBody CreateRider createRider,Authentication authentication,
        PersistentEntityResourceAssembler assembler,@RequestPart(value = "profilePic", required = false) MultipartFile file) {

    if (authentication != null && authentication.getPrincipal() != null) {
        Collection<? extends GrantedAuthority> authorities = authentication.getAuthorities();
        boolean authorized = authorities.contains(new SimpleGrantedAuthority("rights"));
        if (authorized==true)
            userService.createNewRider(createRider);
        else
            return  ResponseEntity.status(HttpStatus.SC_CONFLICT).body("Logged In user is not admin");
    } else {
        // Access denied
        throw new AccessDeniedException("Not logged in");
    }
    return ResponseEntity.ok("Rider Created");
}

createRider.java

public class CreateRider {

    private String email;

    private String name;

    private String password;

    private String contactNumber;

    private String cnicNumber;

    private String drivingLicense;

    private String reference;

    private MultipartFile file;
     ..getters nad setters 
    }

userService.createNewRider

public void createNewRider(CreateRider createRider) {
        Group group=groupRepo.findOne(Constants.RIDER_USER_GROUP);
        User user=new User();
        user.setGroup(group);
        user.setEmail(createRider.getEmail());
        user.setName(createRider.getName());
        user.setPassword(createRider.getPassword());
        user.setContactNumber(createRider.getContactNumber());
        user.setCnicNumber(createRider.getCnicNumber());
        user.setDrivingLicense(createRider.getDrivingLicense());
        user.setReference(createRider.getReference());
        userRepo.save(user);
        RiderLocation riderLocation=new RiderLocation();
        riderLocation.setRider(user);
        riderLocationRepo.save(riderLocation);
        ///User Photo 
         UserPhoto userPhoto=photoService.createUserPhoto(createRider.getFile(), user.getId());
         userPhotoRepo.save(userPhoto);



    }

您可以通過將以下內容添加到控制器來獲取作為MultipartFile的個人資料圖片

@RequestPart(value = "profilePic", required = false) MultipartFile profilePic

所以控制器方法變成了

import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.multipart.MultipartFile;

@RequestMapping(method = RequestMethod.POST, value = "createRider")
public @ResponseBody ResponseEntity<?> createRider(
        @RequestPart CreateRider createRider,Authentication authentication,
        PersistentEntityResourceAssembler assembler, @RequestPart(value = "profilePic", required = false)  MultipartFile profilePic) {

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM