我很少读关于文件上传的文章,只是用它们来理解它是如何工作的。但不幸的是,我无法让它工作:
代码

 <html>
   <head>
     <script type="text/javascript" src="lib/jquery-2.1.3.min.js"></script>
    <script type="text/javascript" src="lib/jquery-validate.min.js"></script>
    </head>

    <script>
         $(
            function()
            {

                 $(':button').click(function(){
                    var formData = new FormData($('form')[0]);
                     $.ajax({
                        url: 'upload.php',
                        xhr: function() {
                            var myXhr = $.ajaxSettings.xhr();
                            return myXhr;
                        },
                        success: function(s,e)
                        {
                            console.log('Completed'+"  "+s+"  "+e);
                        },
                        error: function(xhr,status,error)
                        {
                            console.log('Error '+xhr+"  "+status+"  "+error);
                        },
                        data: formData,
                        cache: false,
                        contentType: false,
                        processData: false
                    });
                });
   })
   </script>
   <body>
     <form enctype="multipart/form-data">
        <input name="file" type="file" />
        <input type="button" value="Upload" />
     </form>
   </body>

这是我得到的错误:
 <b>Warning</b>:  move_uploaded_file(/new  1.txt): failed to open stream:
 Permission denied in <b>C:\Users\gopir\Server\Apache24\htdocs\front-
  page\upload.php</b> on line <b>6</b><br /><br />

<b>Warning</b>:  move_uploaded_file(): Unable to move 'C:\Users\gopir
\AppData\Local\Temp\php306E.tmp' to '/new  1.txt' in <b>C:\Users\gopir
\Server\Apache24\htdocs\front-page\upload.php</b> on line <b>6</b><br />

 There was an error uploading the file, please try again!

我知道新的1.txt权限导致了问题。
我的怀疑是
用户上传文件时如何知道这些权限?如果需要上载,是否需要更改权限?还是我理解错了?
我不了解这里的xhr函数。我用谷歌搜索了一下。但我不明白这里的需要。
请澄清我的疑虑。如果这个问题不符合质量要求,请告诉我。我将编辑/删除它。
谢谢
忘记上传php
 <?php

   $folder = "/";
   $path = $folder . basename( $_FILES['file']['name']);

   if(move_uploaded_file($_FILES['file']['tmp_name'], $path)) {
     echo "The file ".  basename( $_FILES['file']['name']). " has been uploaded";
    } else{
    echo "There was an error uploading the file, please try again!";
   }
   ?>

最佳答案

将php write权限授予要将上载文件移动到的目录。更多的信息和不同的方法已经被提出。
请检查here以设置顶级上载目录。
我个人喜欢this article for what the proper permissions of an upload directory are方法,它显示了如何检查某个上传目录是否存在,而不是使用PHP创建它。其优点是,httpd或php进程是所创建目录的所有者(无需对服务器端目录结构应用手动更改),并且您不会犯错误,将上载目录的权限更改为0777以获得快速简便的解决方案。这是在顶级上传目录下组织树的好方法。

09-19 00:39