我在我的localhost上的IIS 7上运行php以进行测试。用户可以将简历作为作业应用程序的一部分上载。 php接收文件并将其上传到uploads目录。
之后,雇主可以登录公司门户网站并查看所有当前的应用程序。他们可以点击查看简历来下载简历的副本。我已将uploads文件夹设置为向IUSR和IIS_IUSR授予完全权限。
对于此文件夹中的现有简历,正确传递权限,雇主可以下载这些文件的副本。但是,当上载新文件时,权限不会传递给此文件,并且在尝试下载时雇主会遇到错误。
使用此代码,我可以下载更改文件夹权限之前存在的简历,但是我遇到了
HTTP错误401.3 - 未经授权 由于Web服务器上此资源的访问控制列表(ACL)配置或加密设置,您无权查看此目录或页面。
当我尝试下载新上传的文件时。
上传代码:
$name = sprintf('uploads/%s.%s',
sha1_file($_FILES['file-0']['tmp_name']),
$ext
);
if (!move_uploaded_file(
$_FILES['file-0']['tmp_name'], $name
)) {
throw new RuntimeException('Failed to move uploaded file.');
}
下载代码
echo "<h3><a href='" . $resume . "' class='linkText'>Link to resume</a></h3>";
如何修改设置以将权限传递给新上传的文件?
答案 0 :(得分:0)
最后我改变了输出下载链接的方式。而不是将其作为我使用readfile
header('Content-Description: File Transfer');
header('Content-Type: ' . $array['filetype']);
header('Content-Disposition: attachment; filename='.basename($resume));
readfile($resume);
出于某种原因,这种方法很好,并且没有关于权限的错误。