无法覆盖 Tomcat UAT 配置文件环境中的默认文件大小限制
Can't override Tomcat default file size limit in UAT profile environment
出于某种原因,在使用 UAT 配置文件环境时,我无法覆盖 Tomcat 关于文件大小限制的设置(在 SIT 上一切正常)
我正在使用 Spring Boot 2.2,我正在将这些属性添加到配置文件中:
spring.servlet.multipart.max-file-size=25MB
spring.servlet.multipart.max-request-size=25MB
然而,当我 运行 我在 Eclipse IDE 上的应用程序(全新安装和配置文件 UAT)时,当我尝试上传大于 1MB 的文件(AFAIK 是默认 Tomcat 的文件大小限制。
还有几点要指出:
- application-sit.properties文件和application-uat.properties都放置了所有指令同样的顺序。
- 当我尝试上传大小小于 1MB 的文件时,出现另一个错误,即 UnsupportedMediaType,所以我想知道问题出在我的 Angular 前端还是我的 Spring 引导后端应用程序。
哦...我 运行 我的 SIT 应用程序在本地,而 UAT 应用程序 运行 在 VM 中(如果它与VM).
提前感谢大家的帮助,如果您需要更多信息,我很乐意回答。
祝你有愉快的一天。
更新
根据 @PiotrP.Karwasz 的要求,我包含了用于制作上传服务的 Angular 和 Spring 代码:
upload()
在 upload-service.service.ts
upload(file: File) {
const formData: FormData = new FormData();
formData.append('file', file);
return new Observable(((observer: Observer<any>) => {
const xhr = new XMLHttpRequest();
xhr.onreadystatechange = _ => {
if (xhr.readyState === 4) {
if(xhr.status === 200) {
observer.next(xhr.response);
observer.complete();
}
else {
observer.error(xhr.response);
}
}
};
///environment.baseUrl changes based on the active profile config
let url = environment.baseUrl + constants.REST_UPLOAD_FILE;
xhr.open('POST', url, true);
xhr.send(formData);
}));
}
save()
在 FileStorageService.java
@Override
public void save(MultipartFile file) {
try {
String filename = FilenameUtils.removeExtension(file.getOriginalFilename())
+ " - "
+ new SimpleDateFormat("dd꞉MM꞉yyyy HH'h'꞉mm'min'꞉ss's'")
.format(new Date())
.toString()
.replaceAll("[^a-zA-Z0-9.-⁄꞉]", "_")
+ "." + FilenameUtils.getExtension(file.getOriginalFilename());
Files.copy(file.getInputStream(), this.root.resolve(filename));
} catch (final Exception e) {
throw new RuntimeException("Non posso salvare il file. Errore: " + e);
}
}
请注意,据我所知,通过在 Eclipse 控制台上进行测试打印内容,它似乎甚至没有达到 Spring Boot save()
方法的地步,我我实际上也尝试过在管理传入请求的控制器方法(其代码将在下面链接)上打印内容,但它不会以任何方式显示任何内容,所以看起来更像是它永远不会到达控制器。
处理上传请求的控制器方法在 https://pastebin.com/EMZStXJw
可用
好的,在提取我的前端构建的 .war
文件后,我终于得到了它,我会把它放在这里供可能需要它的人使用。
问题是我的 environment.baseUrl
(参见 upload-service.service.ts
文件中的 upload()
方法)指向一个 无效的 端点(我仍然必须弄清楚为什么端点会这样,为什么它首先会出现)所以当我尝试发出请求时,我得到了与实际错误无关的模棱两可的错误。
修改 UAT 配置文件足以使其正常工作。
TLDR;
确保您在 UAT
配置文件中指向正确的 URL 端点并提取 .war
以检查您的 application.properties
文件。
出于某种原因,在使用 UAT 配置文件环境时,我无法覆盖 Tomcat 关于文件大小限制的设置(在 SIT 上一切正常)
我正在使用 Spring Boot 2.2,我正在将这些属性添加到配置文件中:
spring.servlet.multipart.max-file-size=25MB
spring.servlet.multipart.max-request-size=25MB
然而,当我 运行 我在 Eclipse IDE 上的应用程序(全新安装和配置文件 UAT)时,当我尝试上传大于 1MB 的文件(AFAIK 是默认 Tomcat 的文件大小限制。
还有几点要指出:
- application-sit.properties文件和application-uat.properties都放置了所有指令同样的顺序。
- 当我尝试上传大小小于 1MB 的文件时,出现另一个错误,即 UnsupportedMediaType,所以我想知道问题出在我的 Angular 前端还是我的 Spring 引导后端应用程序。
哦...我 运行 我的 SIT 应用程序在本地,而 UAT 应用程序 运行 在 VM 中(如果它与VM).
提前感谢大家的帮助,如果您需要更多信息,我很乐意回答。
祝你有愉快的一天。
更新
根据 @PiotrP.Karwasz 的要求,我包含了用于制作上传服务的 Angular 和 Spring 代码:
upload()
在 upload-service.service.ts
upload(file: File) {
const formData: FormData = new FormData();
formData.append('file', file);
return new Observable(((observer: Observer<any>) => {
const xhr = new XMLHttpRequest();
xhr.onreadystatechange = _ => {
if (xhr.readyState === 4) {
if(xhr.status === 200) {
observer.next(xhr.response);
observer.complete();
}
else {
observer.error(xhr.response);
}
}
};
///environment.baseUrl changes based on the active profile config
let url = environment.baseUrl + constants.REST_UPLOAD_FILE;
xhr.open('POST', url, true);
xhr.send(formData);
}));
}
save()
在 FileStorageService.java
@Override
public void save(MultipartFile file) {
try {
String filename = FilenameUtils.removeExtension(file.getOriginalFilename())
+ " - "
+ new SimpleDateFormat("dd꞉MM꞉yyyy HH'h'꞉mm'min'꞉ss's'")
.format(new Date())
.toString()
.replaceAll("[^a-zA-Z0-9.-⁄꞉]", "_")
+ "." + FilenameUtils.getExtension(file.getOriginalFilename());
Files.copy(file.getInputStream(), this.root.resolve(filename));
} catch (final Exception e) {
throw new RuntimeException("Non posso salvare il file. Errore: " + e);
}
}
请注意,据我所知,通过在 Eclipse 控制台上进行测试打印内容,它似乎甚至没有达到 Spring Boot save()
方法的地步,我我实际上也尝试过在管理传入请求的控制器方法(其代码将在下面链接)上打印内容,但它不会以任何方式显示任何内容,所以看起来更像是它永远不会到达控制器。
处理上传请求的控制器方法在 https://pastebin.com/EMZStXJw
可用好的,在提取我的前端构建的 .war
文件后,我终于得到了它,我会把它放在这里供可能需要它的人使用。
问题是我的 environment.baseUrl
(参见 upload-service.service.ts
文件中的 upload()
方法)指向一个 无效的 端点(我仍然必须弄清楚为什么端点会这样,为什么它首先会出现)所以当我尝试发出请求时,我得到了与实际错误无关的模棱两可的错误。
修改 UAT 配置文件足以使其正常工作。
TLDR;
确保您在 UAT
配置文件中指向正确的 URL 端点并提取 .war
以检查您的 application.properties
文件。