Я уже несколько часов пытаюсь загрузить изображение на свой сервер с помощью PHP.Я только ранее работал в Angular 2, и теперь, когда я перешел на 8, я не могу заставить свой старый код работать, и я подозреваю, что это происходит из-за обновления методов Http до HttpClient.
Вот app.component.ts, который вызывает сервис с входным файлом:
let fileslen = $("#images")[0].files.length;
for(let i = 0; i < fileslen; i++){
this.files.push($("#images")[0].files[i]);
this.serviceImage.uploadImage(upload_url, this.files[i])
.subscribe(
response=> {
this.imagesUrl.push(response["image"]);
},
error=>{
alert('error:' + JSON.stringify(error));
}
);
}
Это моя сервисная функция для загрузки изображения:
uploadImage(url: string, file: File) {
return Observable.create(observer => {
let formData: FormData = new FormData();
let xhr: XMLHttpRequest = new XMLHttpRequest();
if (file != undefined) {
formData.append("image", file, file.name);
}
xhr.onreadystatechange = () => {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
observer.next(JSON.parse(xhr.response));
observer.complete();
} else {
observer.error(xhr.response);
}
}
};
xhr.open('POST', url, true);
xhr.setRequestHeader('Access-Control-Allow-Origin', '*');
xhr.send(formData);
});
}
И, наконец, этоphp файл:
<?php
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: Content-Type");
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
$uploads_dir = 'uploads';
$object = new stdClass();
$errorMsg = "Error in image";
$noFile = "No file";
if(isset($_FILES['imagen'])){
$tmp_name = $_FILES['image']['tmp_name'];
$ext = pathinfo($_FILES['image']['name'], PATHINFO_EXTENSION);
$randNum = rand(0, 1000);
$fileName = time() . sha1($_FILES['image']['name']. $randNum) . "." .$ext;
if(move_uploaded_file($tmp_name, "$uploads_dir/$fileName")){
$object->image = "$fileName";
echo json_encode($object);
}else{
echo json_encode($errorMsg);
}
}else{
echo json_encode($noFile);
}
?>
Вывод консоли: «Ошибка в изображении»
Журнал ошибок сервера показывает это:
[Mon Sep 23 13:38:53.573923 2019] [proxy_fcgi:error]
[pid 17680:tid 140606869325568]
[client 213.127.0.0:37223]
AH01071: Got error 'PHP message: PHP Warning:
move_uploaded_file(uploads/156923873339c6f3f02e62236530e6b49efbafabacd958828a.pdf):
failed to open stream:
No such file or directory in /var/www/clients/client490/web1568/web/app/php/upload_image.php
on line 15\nPHP message: PHP Warning: move_uploaded_file():
Unable to move '/var/www/clients/client490/web1568/tmp/phpIdHxdy'
to 'uploads/156923873339c6f3f02e62236530e6b49efbafabacd958828a.pdf'
in /var/www/clients/client490/web1568/web/app/php/upload_image.php
on line 15\n',
referer: {url}