【问题标题】:move_uploaded_file() can't upload files in a Hosting Servermove_uploaded_file() 无法在托管服务器中上传文件
【发布时间】: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);
      }
   });

}


我用警报和回声进行了测试,我知道服务器收到了文件,但它没有上传。

【问题讨论】:

标签: php html ajax upload


【解决方案1】:

创建一个

<?php phpinfo(); ?>

托管服务器上的文件并检查 file_uploads 部分。这应该是ON

如果它是 OFFFALSE,您可能没有上传文件的权利。为此,您应该联系托管服务器的管理员。如果您是 root,您可以使用此链接将此状态设置为 ONhere

【讨论】:

  • 我真的以为这是答案,但不幸的是它仍然不起作用,因为 php.ini 中的 file_uploads 部分已经在托管服务器中设置为 ON
  • 请检查文件夹的文件权限一次。您可能没有写权限。数值应为 644。
  • 再次检查,我还将数值“0777”放在所有文件夹中,但仍然没有答案。我应该在文件上放一些执行权限吗?我看到他们还在'0644'中......
  • 也许您应该创建一个新文件并构建一个非常简单的框架。在 HTML 中创建一个表单并将表单与提交链接到新的 PHP 文件。所以你可以更好地调试它,并且可能会在源代码中发现错误。也许这个链接会对你有所帮助:here
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-27
  • 2013-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多