На моем локальном сервере, с установленным apache, я могу нормально загружать файлы. Но когда я перемещаю все на хост-сервер (например, Altervista.org), файлы не загружаются.
Вот HTML-код:
<form id="fileupload" action="" method="POST">
<input id="filesupload" type="file" multiple name="files" accept=".jpg" accessKey="PDF"/>
<button id="MegaUpload" type="button" class="btn btn-primary start" onclick="conversion()">
</form>
Предполагается, что HTMLХорошо работает, я передаю все в AJAX, и я могу нормально подключиться к серверу. PHP-код также может принимать входной файл, но когда я пытаюсь выполнить загрузку, он не работает.
Вот код PHP:
if (isset($_FILES['fileToUpload'])) {
if (!isset($_COOKIE['users'])) {
setcookie('users', md5(time()/1234), time() + (86400), "/");
}
if (!file_exists('files/uploads/' . $_COOKIE['users'] . '/')) {
mkdir("files/uploads/" . $_COOKIE['users'], 0755);
mkdir("files/uploads/" . $_COOKIE['users'] . "/tmp", 0755);
}
$target_dir = 'files/uploads/' . $_COOKIE['users'] . '\/tmp\/';
for ($s=0; $s <= 10; $s++) {
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"][$s]);
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"][$s],
$target_file)) {
//ok
}
else{
//something wrong
}
}
}
Еще раз: если предположить, что AJAX работает нормально (потому что я проверил, а сервер получает введенные файлы), почему на хостинге? на сервере он не работает?
Он прекрасно создает каталоги, как вы можете видеть, есть и права доступа к каталогам, и я проверил в FileZilla, установлен ли каждый .php
файл в '0755'.
Если вы не можете понять, что происходит, я могу опубликовать часть AJAX, если хотите. Спасибо.
РЕДАКТИРОВАТЬ:
Я редактировал часть PHP, так что вы знаете, что это цикл.
Я добавил enctype='multipart/form-data'
, как высказал, но все равно ничего не получилось.
Я забыл поставить часть multiple
и в HTML.
Вот часть AJAX, как вы и просили:
$("#filesupload").change(function(evnt) {
var fd = new FormData();
for (var s = 0; s < ins; s++) {
fd.append("fileToUpload[]", document.getElementById('filesupload').files[s]);
}
$.ajax({
url: 'upload.php', // point to server-side PHP script
dataType: 'text', // what to expect back from the PHP script, if anything
cache: false,
contentType: false,
processData: false,
data: fd,
type: 'post',
async: false,
success: function(result){
alert(result);
},
error: function(result) {
alert(result);
}
});
}
Я тестировал с предупреждениями и эхом, и я знаю, что серверы получают файлы, но они не загружаются.