Сохранение изображения на сервере IIS с помощью XMLHttpRequest и PHP

#javascript #php #iis #xmlhttprequest

#javascript #php #iis #xmlhttprequest запрос

Вопрос:

У меня есть веб-приложение, которое позволяет пользователям делать снимки с помощью веб-камеры, которые затем отображаются в виде HTML-холста. Затем холст успешно преобразуется в изображение, которое отображается и затем отправляется на сервер с помощью XMLHttpRequest. Этот процесс происходит при запуске следующей функции JS:

 function convertCanvasToImage() {
    let canvas = document.getElementById("canvas");
    let image = new Image();
    document.getElementById("profile").src = canvas.toDataURL();
 
    var newName = canvas.toDataURL();
    xhr = new XMLHttpRequest();

    xhr.open('POST', 'saveimage.php');
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xhr.send(encodeURI('imgBase64='   newName));
}
 

PHP-код, saveimage.php , затем обрабатывает изображение для сохранения на сервере:

   define('UPLOAD_DIR', 'uploads/new.png');   
  $img = $_POST['imgBase64'];   
  $img = str_replace('data:image/png;base64,', '', $img);   
  $img = str_replace(' ', ' ', $img);   
  $data = base64_decode($img);   
  $file = UPLOAD_DIR;//. uniqid() . '.png';   
  $success = file_put_contents($file, $data);   
  print $success ? $file : 'Unable to save the file.';  
 

Этот процесс работает точно так, как задумано, на локальном сервере (XAMPP), но при запуске в IIS (IIS10 на Windows Server 2019) я получаю сообщение «Не удалось сохранить файл». сообщение.

Я предполагаю, что это проблема безопасности с IIS, но я не уверен, связано ли решение с чем-то с заголовками PHP, что-то с CORS в IIS или что-то совсем другое. Есть предложения?

Комментарии:

1. перед сохранением проверьте разрешение каталога или результат вывода

2. Спасибо, редактирование разрешения каталога решило проблему

Ответ №1:

Подтверждено, что это была проблема с правами доступа к папке

Комментарии:

1. Ваша проблема решена? Если проблема решена, пожалуйста, поделитесь своим ответом, чтобы помочь другим, у кого похожие проблемы.