move_uploaded_file()无法在主机服务器中上传文件

时间:2019-11-05 13:24:02

标签: php html ajax upload

在安装了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);
      }
   });

}


我测试了警报和回声,并且我知道服务器接收到文件,但是文件没有上传。

1 个答案:

答案 0 :(得分:0)

创建

<?php phpinfo(); ?>
托管服务器上的

文件,并检查 file_uploads 部分。这应该在 ON 上。

如果为 OFF FALSE ,则您可能无权上传文件。为此,您应该联系托管服务器的管理员。如果您是root用户,则可以使用以下链接将此状态设置为 ON here