Я не могу загрузить файлы (изображения) на удаленный сервер (apache2).Я использую пружинный сапог Java для задней части и Angular 7 для передней).На localhost: 4200 работает хорошо.На удаленном сервере я получил из консоли браузера Chrome:
POST http://www.xxx.tech:8081/images/upload 400
Ошибка: "{" отметка времени ":" 2019-05-10T09:39: 38.162 + 0000 "," status ": 400," error ":" Bad Request "," message ":" Файл не найден "," path ":" / images / upload "}"
заголовки: HttpHeaders{normalizedNames: Map (0), lazyUpdate: null, lazyInit: ƒ}
сообщение: «Http-сбой для http://www.xxx.tech:8081/images/upload: 400 OK»
name: «HttpErrorResponse»
ok: false
status: 400
statusText: "OK"
url: "http://www.xxx.tech:8081/images/upload"
Папка каталога уже существует на VPS-сервере. Как заставить ее работать? В моем контроллере.java Я пытался заменить
File tmp = new File("../front/assets/img/").getCanonicalFile();
на
File tmp = new File("./front/assets/img/").getCanonicalFile();
и
File tmp = new File("/home/alexandra/www/front/assets/img/").getCanonicalFile();
Но все равно отображается то же сообщение об ошибке
JAVA: ImageController.java
@PostMapping(value="images/upload")
public String uploadImage( @RequestParam("file") MultipartFile transferedFile) throws Exception{
try {
//FOR LOCALHOST (works)
//File tmp = new File("../FRONT-
//Alexandra/src/assets/img/").getCanonicalFile();
//FOR REMOTE SERVER (don't work)
File tmp = new File("../front/assets/img/").getCanonicalFile();
String destination = tmp.getPath() + "/" + transferedFile.getOriginalFilename();
File data = new File(destination);
transferedFile.transferTo(data);
Image image = new Image(transferedFile.getOriginalFilename(), destination);
imageRepository.save(image);
return destination;
}catch( Exception param_exception) {
throw new ResponseStatusException(
HttpStatus.BAD_REQUEST,
"No file found");
}
}
Angular: mycomponent.component.ts
public apiUrl: string = environment.ApiUrl;
...
public uploadImaeg(): void {
this.imgesUploaded.map(image => {
if (image != null && image != undefined) {
this.imagesService.addImage(image).subscribe();
}
})
}
images.service.ts
public addImage(param_file: File): Observable<Object> {
const headers: HttpHeaders = new HttpHeaders();
const data: FormData = new FormData();
data.append("file", param_file, param_file.name);
headers.append("Content-Type", "multipart/form-data");
const Obs: Observable<boolean> = this.serviceHttp.post(
this.apiUrl + "images/upload", data, { headers: headers}
).pipe(
map(
(param_response: boolean) => {
return param_response;
}
)
);
return Obs;
}
environment.prod.ts
export const environment = {
production: true,
ApiUrl: 'http://'+document.location.hostname +':8081/'
};