将文件上传到我的本地apache服务器

问题描述:

我读了很少关于文件上传的SO帖子,只是用它们来了解它是如何工作的。但不幸的是,我无法得到它的工作:将文件上传到我的本地apache服务器

代码

<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函数。我GOOGLE了它。但我不明白它和它在这里的需要。

请清除我的疑惑。如果这个问题不符合SO质量,请告诉我。我将编辑/删除它。

感谢

忘记上传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!"; 
    } 
    ?> 
+1

这是一个php错误信息,与您发布的代码无关。请分享服务器端代码(= php)。但要猜测:你的php代码试图将上传的文件移动到php没有写权限的目录中。 – tworabbits

+0

这不是关于用户权限。它似乎PHP没有权限写在目标文件夹。我们可以看到upload.php脚本吗? – Sisir

+0

@tworabbits所以这是我试图移动上传文件的文件夹的权限问题。我对吗? –

给你的php目录的写权限,你想将你上传的文件。更多的信息和不同的方法已经作出here

请检查this article for what the proper permissions of an upload directory are设置您的*上传目录。

我个人喜欢this的方法,它显示了如何检查某个上传目录是否已经存在,以及如何不使用php创建它。好处是您的httpd或php进程自动创建目录的所有者(不需要手动更改服务器端目录结构),并且您不会在更改上传目录的权限时将错误更改为0777以快速获取并容易解决。这是在*上传目录下组织树的好方法。