将文件上传到我的本地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!";
}
?>
答
给你的php目录的写权限,你想将你上传的文件。更多的信息和不同的方法已经作出here。
请检查this article for what the proper permissions of an upload directory are设置您的顶级上传目录。
我个人喜欢this的方法,它显示了如何检查某个上传目录是否已经存在,以及如何不使用php创建它。好处是您的httpd或php进程自动创建目录的所有者(不需要手动更改服务器端目录结构),并且您不会在更改上传目录的权限时将错误更改为0777以快速获取并容易解决。这是在顶级上传目录下组织树的好方法。
这是一个php错误信息,与您发布的代码无关。请分享服务器端代码(= php)。但要猜测:你的php代码试图将上传的文件移动到php没有写权限的目录中。 – tworabbits
这不是关于用户权限。它似乎PHP没有权限写在目标文件夹。我们可以看到upload.php脚本吗? – Sisir
@tworabbits所以这是我试图移动上传文件的文件夹的权限问题。我对吗? –