스프링 부팅에서 다중 파트 경계를 찾을 수 없으므로 요청이 거부되었습니다.
스프링 부츠나 우편배달부 크롬 애드온과 함께 웹 서비스로 시도하고 있습니다.
집배원content-type="multipart/form-data"
그리고 나는 아래의 예외를 받고 있다.
HTTP Status 500 - Request processing failed;
nested exception is org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request;
nested exception is java.io.IOException:
org.apache.tomcat.util.http.fileupload.FileUploadException: the request was rejected because no multipart boundary was found
컨트롤러에서 다음 코드를 지정했습니다.
@ResponseBody
@RequestMapping(value = "/file", headers = "Content-Type= multipart/form-data", method = RequestMethod.POST)
public String upload(@RequestParam("name") String name,
@RequestParam(value = "file", required = true) MultipartFile file)
//@RequestParam ()CommonsMultipartFile[] fileUpload
{
// @RequestMapping(value="/newDocument", , method = RequestMethod.POST)
if (!file.isEmpty()) {
try {
byte[] fileContent = file.getBytes();
fileSystemHandler.create(123, fileContent, name);
return "You successfully uploaded " + name + "!";
} catch (Exception e) {
return "You failed to upload " + name + " => " + e.getMessage();
}
} else {
return "You failed to upload " + name + " because the file was empty.";
}
}
여기서 파일 핸들러 코드를 지정합니다.
public String create(int jonId, byte[] fileContent, String name) {
String status = "Created file...";
try {
String path = env.getProperty("file.uploadPath") + name;
File newFile = new File(path);
newFile.createNewFile();
BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(newFile));
stream.write(fileContent);
stream.close();
} catch (IOException ex) {
status = "Failed to create file...";
Logger.getLogger(FileSystemHandler.class.getName()).log(Level.SEVERE, null, ex);
}
return status;
}
문제는 이 설정을 하고 있는 것입니다.Content-Type
그냥 비워두세요.구글 크롬이 대신 해줄 것이다.멀티파트Content-Type
파일 경계를 알아야 합니다.또, 파일 경계를 삭제했을 경우,Content-Type
우체부가 자동으로 처리해 드릴 겁니다.
우편 배달원의 내용 유형을 선택 해제하면 우편 배달원이 런타임에 입력한 내용에 따라 내용 유형을 자동으로 탐지합니다.
Postman을 통해 SpringMVC 백엔드 웹 앱에 파일 업로드:
백엔드:
집배원:
Postman에서 POST 요청을 할 때도 같은 문제가 발생했는데, 나중에 Custom Content-Type을 경계값과 함께 설정함으로써 문제를 해결할 수 있었습니다.
저는 사람들이 비슷한 문제에 직면할 수 있다고 생각했기 때문에 제 해결책을 공유합니다.
집배원한테 할 수 있다면서요?
"Postman - REST Client"는 content-type 설정으로 사후 작업을 수행하는 데 적합하지 않습니다.Advanced REST 클라이언트 등을 사용해 볼 수 있습니다.
또한 Spring 3.1 M2 이후 헤더는 소비 및 생산으로 대체되었습니다.https://spring.io/blog/2011/06/13/spring-3-1-m2-spring-mvc-enhancements 를 참조해 주세요.그리고 직접 사용할 수 있습니다.produces = MediaType.MULTIPART_FORM_DATA_VALUE
.
이 문제는 제가 axios를 기반으로 쓰는 request.js를 사용하기 때문에 발생하였습니다.
디폴트 설정은 이미 완료했습니다.headers in request.request.syslog
import axios from 'axios'
const request = axios.create({
baseURL: '',
timeout: 15000
})
service.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'
이것은 내가 이것을 해결하는 방법이다.
대신
request.post('/manage/product/upload.do',
param,config
)
요청을 직접 전송하기 때문에 구성을 추가하지 않았습니다.
axios.post('/manage/product/upload.do',
param
)
이것이 당신의 문제를 해결할 수 있기를 바랍니다.
우체부를 이용하여 5.6M의 파일을 외부 네트워크로 보낼 때도 같은 문제에 직면했습니다.내 컴퓨터 및 로컬 테스트 환경에서도 동일한 작업이 성공합니다.
모든 서버 설정과 HTTP 헤더를 확인한 결과, Postman이 외부 HTTP 요구에 대한 요구를 시뮬레이션하는 데 문제가 있을 수 있다는 것을 알게 되었습니다.마지막으로 크롬 HTML 페이지에서 sendfile 요청을 성공적으로 완료하였습니다.참고용으로만:)
아래의 간단한 코드로 시도하실 수 있습니다. 작동하실 겁니다.Advanced REST Client에서 테스트했습니다.아래의 스크린샷은 설정에 도움이 됩니다.
package com.example.demo;
import java.io.FileOutputStream;
import java.io.IOException;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
@RestController
public class ImageUploadController {
@PostMapping("image-upload")
public String uploadImage(@RequestParam MultipartFile myFile) throws IOException {
byte[] bytes = myFile.getBytes();
FileOutputStream fileOutputStream = new FileOutputStream("image.jpg");
fileOutputStream.write(bytes);
fileOutputStream.close();
return "Image uploaded successfully..!";
}
}
업로드된 이미지는 프로젝트의 아래 위치에서 찾을 수 있습니다.
또한 컨트롤러가 @SpringBootApplication 패키지의 패키지에 포함되어 있어야 하는지 확인하십시오.아래 이미지를 참조할 수 있습니다.
ARC(Advanced Rest 클라이언트)의 새로운 버전에서는 파일 업로드 옵션도 제공됩니다.
언급URL : https://stackoverflow.com/questions/36005436/the-request-was-rejected-because-no-multipart-boundary-was-found-in-springboot
'source' 카테고리의 다른 글
WordPress Apache VirtualAlloc 및 VirtualFree 실패, PHP 메모리 부족 (0) | 2023.02.26 |
---|---|
봄에 GET 요구 메서드와 POST 요구 메서드를 조합하다 (0) | 2023.02.26 |
! 오브젝트 메서드 뒤에 typescript가 있는 연산자 (0) | 2023.02.26 |
Maven - Eclipse에서 관리 버전 재정의 경고 억제 (0) | 2023.02.26 |
AngularJS 왜 스코프가 필요하죠?$140 이내.$on? (0) | 2023.02.26 |