【发布时间】:2020-03-01 21:10:51
【问题描述】:
在我的本地主机服务器中,安装了 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 工作正常(因为我测试过,并且服务器接收到我输入的文件),为什么在托管服务器中它不起作用?
它可以完美地创建目录,也有目录权限,如您所见,如果每个 .php 文件都设置为“0755”,我在 FileZilla 中进行了检查。
如果您不明白发生了什么,如果您愿意,我可以发布 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);
}
});
}
我用警报和回声进行了测试,我知道服务器收到了文件,但它没有上传。
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。