멀티파트예외:현재 요청이 다중 부품 요청이 아닙니다.
저는 파일 업로드를 위해 휴식형 컨트롤러를 만들려고 합니다.나는 이것을 보고 이 컨트롤러를 만들었습니다.
@RestController
public class MaterialController {
@RequestMapping(value="/upload", method= RequestMethod.POST)
public String handleFileUpload(
@RequestParam("file") MultipartFile file){
String name = "test11";
if (!file.isEmpty()) {
try {
byte[] bytes = file.getBytes();
BufferedOutputStream stream =
new BufferedOutputStream(new FileOutputStream(new File(name + "-uploaded")));
stream.write(bytes);
stream.close();
return "You successfully uploaded " + name + " into " + name + "-uploaded !";
} catch (Exception e) {
return "You failed to upload " + name + " => " + e.getMessage();
}
} else {
return "You failed to upload " + name + " because the file was empty.";
}
}
}
그리고 집배원을 이용해서 pdf를 보냈습니다.
그러나 서버가 충돌하고 다음 오류가 발생합니다.
.MultipartException: Current request is not a multipart request
다시 한번 이것을 찾았고, 추가했습니다.bean.xml
파일
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
</bean>
</beans>
유감스럽게도 여전히 같은 오류를 호소하고 있습니다.
여러 파트 요청에 대해 우편배달부를 사용할 경우 헤더에 사용자 정의 내용 유형을 지정하지 마십시오.따라서 포스트맨의 헤더 탭은 비어 있어야 합니다.우체부가 양식-데이터 경계를 결정합니다.Postman의 Body 탭에서 Form-data를 선택하고 file type을 선택해야 합니다.관련 토론은 https://github.com/postmanlabs/postman-app-support/issues/576 에서 확인할 수 있습니다.
서버로의 요청이 여러 부분으로 이루어진 요청이 아닌 것이 문제인 것 같습니다.기본적으로 고객측 양식을 수정해야 합니다.예를 들어,
<form action="..." method="post" enctype="multipart/form-data">
<input type="file" name="file" />
</form>
도움이 되길 바랍니다.
저 또한 같은 문제에 직면해 있었습니다.Postman
위해서multipart
. 다음 단계를 수행하여 수정했습니다.
- 선택 안 함
Content-Type
에서Headers
부분. - 인
Body
의 탭Postman
당신은 선택해야 합니다.form-data
선택합니다.file type
.
그것은 나에게 효과가 있었다.
예전에 그런 일이 있었어요. 저는 완벽하게 작동하는 포스트맨 구성을 가지고 있었지만, 아무것도 바꾸지 않고, 비록 제가 그 사실을 알리지 않았음에도 불구하고 말이죠.Content-Type
포스트맨에서 수동으로 작동이 멈췄습니다. 이 질문에 대한 답에 따라, 저는 헤더를 비활성화하는 것과 포스트맨이 자동으로 추가하도록 하는 것 둘 다 시도했지만, 둘 다 작동하지 않았습니다.
저는 결국에 가서 해결했습니다.Body
탭, 매개 변수 유형 변경File
로.Text
, 그 다음에 다시File
파일을 다시 저장하여 전송할 수 있습니다. 어찌된 일인지 다시 작동하게 되었습니다.포스트맨 벌레 냄새가 나요 그 특정한 경우엔?
application.properties에서 다음을 추가하십시오.
spring.servlet.multipart.max-file-size=128KB
spring.servlet.multipart.max-request-size=128KB
spring.http.multipart.enabled=false
그리고 html 형태로 당신은 다음이 필요합니다.enctype="multipart/form-data"
. 예를 들어,
<form method="POST" enctype="multipart/form-data" action="/">
도움이 되길 바랍니다!
요청에서 선택한 파일을 확인합니다.
저는 다른 기계에서 요청을 가져온 것처럼 파일이 시스템에 존재하지 않아 오류가 발생했습니다.
제 경우에는 제거했습니다.
'Content-Type': 'application/json',
내 인터셉터로 부터 모든 것이 효과가 있습니다.
intercept(httpRequest: HttpRequest<any>, httpHandler: HttpHandler): Observable<HttpEvent<any>> {
if (this.authService.isUserLoggedIn() && httpRequest.url.indexOf('login') === -1) {
const authReq = httpRequest.clone({
headers: new HttpHeaders({
'Content-Type': 'application/json',
Authorization: this.authService.getBasicAuth()
})
});
return httpHandler.handle(authReq);
} else {
return httpHandler.handle(httpRequest);
}}
매핑에 소비 = {MULTIPART_FORM_DATA_VALUE}을(를) 추가해야 합니다.전체 예제:
@PostMapping(path = "/{idDocument}/attachments", consumes = {MULTIPART_FORM_DATA_VALUE})
ResponseEntity<String> addAttachmentsToDocumentForm(@PathVariable Long idDocument, @RequestParam("file") MultipartFile[] files){
documentService.addAttachments(idDocument, files);
return ok("your response");
}
@PostMapping("/upload")
public ResponseEntity<ResponseMessage> uploadFile(@RequestParam("file") MultipartFile uploadFile) {
String message = "";
try {
service.save(uploadFile);
message = "Uploaded the file successfully: " + uploadFile.getOriginalFilename();
return ResponseEntity.status(HttpStatus.OK).body(new ResponseMessage(message));
} catch (Exception e) {
message = "Could not upload the file: " + uploadFile.getOriginalFilename() + "!";
return ResponseEntity.status(HttpStatus.EXPECTATION_FAILED).body(new ResponseMessage(message));
}
}
ARCclient에서 - 지정하여 ARC(advanced rest client) - 와 하여 시킵니다 시킵니다 하여 와 Content-Type multipart/form-data
(이는 헤더 이름 및 헤더 값입니다) REST 사양에 따라 필드 이름을 지금 지정할 수 있는 키 및 값으로 폼 데이터를 추가하고 파일 선택기에서 업로드할 파일을 선택할 수 있습니다.
맞춤법 오류로 같은 문제가 발생했습니다. "multipart/form-data" 철자를 잘못 입력하여 이 예외를 수정했습니다. 현재 요청은 다중 부품 요청 클라이언트 측 오류가 아니므로 양식을 확인하십시오.
나는 이 문제에 직면하고 있었지만 그것은 내가 우체부에 업로드하고 있던 파일이 우체부 작업 디렉토리에 없었기 때문이었습니다. 설정으로 이동 -> 일반으로 이동하고 위치로 스크롤하여 위치 폴더를 찾고 거기에 업로드할 파일을 넣었습니다.
매개 변수 @RequestParam(필수 = false, 값 = "file") MultipartFile 파일을 사용하여 required=files를 추가합니다.
언급URL : https://stackoverflow.com/questions/42013087/multipartexception-current-request-is-not-a-multipart-request
'programing' 카테고리의 다른 글
다른 도메인으로 전환하고 사용자를 얻는 방법 (0) | 2023.09.07 |
---|---|
MariaDB 대 Mysql 쿼리 문제 (0) | 2023.09.07 |
Angular 2에서 페이지에 페이지를 다시 로드하는 방법은 무엇입니까? (0) | 2023.09.07 |
명령줄을 통해 변수를 파워셸 스크립트로 전달 (0) | 2023.09.07 |
SQL 개발자에서 내보내기 프로세스 중지 (0) | 2023.09.07 |