我正在尝试使用邮递员来测试我为Spring启动应用程序创建的帖子请求之一。我通过邮递员的帖子请求总是返回404。
我的服务代码
@Service
public class AmazonClient {
private AmazonS3 s3client;
@Value("${amazonProperties.endpointUrl}")
private String endpointUrl;
@Value("${amazonProperties.bucketName}")
private String bucketName;
@Value("${amazonProperties.accessKey}")
private String accessKey;
@Value("${amazonProperties.secretKey}")
private String secretKey;
@PostConstruct
private void initializeAmazon() {
AWSCredentials credentials = new BasicAWSCredentials(this.accessKey, this.secretKey);
this.s3client = AmazonS3ClientBuilder.standard().withRegion(Regions.US_EAST_2).withCredentials(
new AWSStaticCredentialsProvider(credentials)).build();
}
@Async
public String uploadFile(MultipartFile multipartFile, boolean enablePublicReadAccess) {
String fileUrl = "";
System.out.println("Reach");
try {
File file = convertMultiPartToFile(multipartFile);
String fileName = generateFileName(multipartFile);
System.out.println("FileName: " + fileName);
fileUrl = endpointUrl + "/" + bucketName + "/" + fileName;
PutObjectRequest putObjectRequest = new PutObjectRequest(this.bucketName, fileName, file);
if (enablePublicReadAccess) {
putObjectRequest.withCannedAcl(CannedAccessControlList.PublicRead);
}
s3client.putObject(putObjectRequest);
file.delete();
} catch (Exception e) {
e.printStackTrace();
}
return fileUrl;
}
private File convertMultiPartToFile(MultipartFile file) throws IOException {
File convFile = new File(file.getOriginalFilename());
FileOutputStream fos = new FileOutputStream(convFile);
fos.write(file.getBytes());
fos.close();
return convFile;
}
private String generateFileName(MultipartFile multiPart) {
return new Date().getTime() + "-" + multiPart.getOriginalFilename().replace(" ", "_");
}
public String deleteFileFromS3Bucket(String fileUrl) {
String fileName = fileUrl.substring(fileUrl.lastIndexOf("/") + 1);
s3client.deleteObject(new DeleteObjectRequest(bucketName, fileName));
return "Successfully deleted";
}
}
我的控制器代码:
@RestController
@RequestMapping("/storage/files")
public class BucketController {
private AmazonClient amazonClient;
@Autowired
BucketController(AmazonClient amazonClient) {
this.amazonClient = amazonClient;
}
@GetMapping
public String getFile(){
return "Files";
}
@PostMapping("/file")
public String file() {
return "Reach!";
}
@PostMapping
public String uploadFile(@RequestPart(value = "file") MultipartFile file) {
System.out.println("Reach!!");
return this.amazonClient.uploadFile(file, true);
}
@DeleteMapping
public String deleteFile(@RequestPart(value = "url") String fileUrl) {
return this.amazonClient.deleteFileFromS3Bucket(fileUrl);
}
}
我的安全配置:
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatchers("/css/**", "/js/**", "/fonts/**", "/index").permitAll()
.antMatchers("/storage*").permitAll();
通过邮递员,我选择了一个POST请求并将http://localhost:8080/storage/files/file
,在正文中,我输入了一个关键的“文件”并将值设置为文件类型,并从本地选择了一个文件。这是响应:
{
"timestamp": "2019-09-02T19:09:54.864+0000",
"status": 404,
"error": "Not Found",
"message": "No message available",
"path": "/storage/files/file"
}
项目结构
邮差结果
这几乎可以肯定是您的安全配置干扰。
您是否尝试过:。而是antMatchers(“/存储/**”)
?
编辑:对于尚未使用JavaFX的用户:当用户只输入一个字符时,将调用方法check(String text)。所以结果也应该是真的,当有1到5个数字时。但不会更多;-)
我的web.xml的ResourceServlet看起来像 但不幸的是我得到了这个错误: 我觉得很奇怪,因为文件夹中的所有映像都被访问了,但我的.swf怎么会被“保护”呢? 之后,我决定将更改为,它最终起作用了。我的问题是...为什么?
我有以下thymeleaf html页面: 问题出在css样式表上。基本上Spring似乎找不到它,尽管我把文件放在 /resources/static/css/main.css 它返回错误(在日志中): 现在医生都说Spring Boot应该自动提供 /resources/static 这是我的网络配置: 出于某种原因,编辑器不让我插入Spring安全配置而不抱怨其格式不正确(IntelliJ、
我正在尝试在Spring Boot中使用JavaMailSender发送电子邮件。我尝试了几乎所有的方法,但仍然得到这个错误。请建议我该怎么做才能使我的代码正常工作?谢谢!!! 这是我发送电子邮件的代码。 application.properties文件 当我尝试运行代码时,遇到以下错误异常
大家好,请告诉我如何在普通jersey rest服务或任何没有spring的web应用程序上添加aop。我用这个链接试过了http://ganeshghag.blogspot.in/2012/10/demystifying-aop-getting-started-with.html但它没有起作用。在本例中,我添加了aop。META-INF中的xml。但它仍然没有检测到我用@Aspect注释添加的类
我尝试按照Spring入门指南“使用Spring MVC提供Web内容”,该指南除了使用Maven之外还使用了Spring Boot和Gradle。我为Eclipse安装了Gradle插件。 我希望使用Eclipse中的Tomcat服务器运行应用程序,因为我还遵循了“将Spring Boot JAR应用程序转换为WAR”指南,并更改了指南中提到的“build.gradle”文件。基本上,我添加了行