我正在使用 AjaxToolkit 中的 AjaxFileUpload 控件成功上传文件。我必须IUSR
授予该文件夹的写权限,但之后就没有问题了。
但是,上传的文件没有继承文件夹上设置的权限,因此它们没有IUSR
列出。在我的本地机器上,这不是什么大问题,但在服务器上,这意味着返回 401,因为文件需要 IUSR 读取权限才能读取它。
据我所知,该文件夹设置为对里面的文件应用权限,这让我相信这与文件保存到文件夹的方式有关。有人知道更多吗?
更新
好的,所以我找到了有关该问题的更多信息。本文建议在将文件保存到指定位置之前,先将其保存在临时位置。他们建议的解决方法(将临时位置更改为已知位置并设置权限)似乎不适用于 AjaxFileUpload。项目临时文件的其余部分出现在那里,但使用 Process Monitor 我可以看到我的临时位置完全是上传图像的其他地方:
如果我为此文件夹设置权限,IUSR
那么我的问题就解决了。那么下一个问题,这个位置会一直存在吗?我的猜测是否定的。如果是这样,我该如何改变它?
更新 2
好的,所以我发现控件上有一些静态方法被设置为构建临时目录:
public static string BuildTempFolder(string fileId)
{
return Path.Combine(AjaxFileUpload.BuildRootTempFolder(), fileId);
}
public static string BuildRootTempFolder()
{
string path = Path.Combine(Path.GetTempPath(), "_AjaxFileUpload");
if (!Directory.Exists(path))
Directory.CreateDirectory(path);
return path;
}
关键线之一可能是:string path = Path.Combine(Path.GetTempPath(), "_AjaxFileUpload");
这似乎与我在进程监视器中找到的内容相匹配。似乎在不重建项目的情况下,我只能使用他们的默认设置,所以我可能会在别处寻找不同的工具。