在安装了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);
}
});
}
我测试了警报和回声,并且我知道服务器接收到文件,但是文件没有上传。
答案 0 :(得分:0)
创建
<?php phpinfo(); ?>
托管服务器上的文件,并检查 file_uploads 部分。这应该在 ON 上。
如果为 OFF 或 FALSE ,则您可能无权上传文件。为此,您应该联系托管服务器的管理员。如果您是root用户,则可以使用以下链接将此状态设置为 ON :here