AjaxChat: Загрузка изображения, зависание, зависание браузера, аварийный сервер

Это касается вопроса здесь:

Возвращаемое значение Javascript из PHP, вызванное XMLHttpRequest

Я добавляю кнопку «Загрузка изображения» на мой AjaxChat. Я использую XMLHttpRequest для отправки изображения на сервер, где я запускаю PHP-скрипт, чтобы переместить его в папку с изображениями. Ниже приведена функция Javascript, которая отвечает за открытие соединения XMLHttpRequest и отправку файла:

function uploadImage() { var form = document.getElementById('fileSelectForm'); var photo = document.getElementById('photo'); var uploadButton = document.getElementById('imageUploadButton'); form.onsubmit = function(event) { event.preventDefault(); // Update button text uploadButton.innerHTML = 'Uploading...'; //Get selected files from input var files = photo.files; // Create a new FormData object var formData = new FormData(); // Loop through selected files for (var i = 0; files.length > i; i++) { var file = files[i]; // Check file type; only images are allowed if (!file.type.match('image/*')) { continue; } // Add file to request formData.append('photo', file, file.name); } // Set up request var xhr = new XMLHttpRequest(); // Open connection xhr.open('POST', 'sites/all/modules/ajaxchat/upload.php', true); // Set up handler for when request finishes xhr.onload = function () { if (xhr.status === 200) { //File(s) uploaded uploadButton.innerHTML = 'Upload'; var result = xhr.responseText; ajaxChat.insertText('\n\[img\]http:\/\/www.mysite.com\/images' + result + '\[\/img\]'); ajaxChat.sendMessage(); } else { alert('An error occurred!'); } form.reset(); }; // Send data xhr.send(formData); } } 

Здесь upload.php:

 <?php $valid_file = true; if($_FILES['photo']['name']) { //if no errors... if(!$_FILES['photo']['error']) { //now is the time to modify the future file name and validate the file $new_file_name = strtolower($_FILES['photo']['tmp_name']); //rename file if($_FILES['photo']['size'] > (1024000)) { //can't be larger than 1 MB $valid_file = false; } //if the file has passed the test if($valid_file) { //move it to where we want it to be move_uploaded_file($_FILES['photo']['tmp_name'], '/var/www/html/images'.$new_file_name); $message = $new_file_name; exit("$message"); } } } ?> 

В настоящее время у меня отключена множественная загрузка изображения, поэтому «Loop through selected files» выполняется только один раз.

Загрузка немного работала на моем ПК, но затем я попытался загрузить изображение с моего телефона. Когда я это сделал, весь сервер (и мой браузер) разбился, по-видимому, из-за бесконечного цикла где-то. Каждый раз, когда я закрою свой браузер и вернусь к нему, или перезагрузите сервер, или перезагрузите компьютер, он зависает и в конечном итоге снова сработает (на моем ПК или на моем телефоне). Я не смог найти сценарий, который вызывает проблему. Я чувствую, что это прямо под моим носом. Кто-нибудь видит проблему? Если вам нужен код HTML-формы, я могу это предоставить, но я не думаю, что это необходимо.

Related of "AjaxChat: Загрузка изображения, зависание, зависание браузера, аварийный сервер"