我有一个 Sitecore 6.4 设置,编辑器可以单击按钮生成 Word 文档。我正在将文件添加到媒体库,并且工作正常。编辑器将单击内容编辑器中的按钮,生成文件,生成媒体项目,然后内容编辑器将在媒体库中显示新项目,编辑器可以单击功能区或项目上的“下载”按钮下载它。但是,我的媒体库被不必要地填满了,所以我试图绕过媒体库。
我没有像以前那样将文件放在任意位置,而是将它放在临时目录中,如下所示:
wordOutputPath = Sitecore.IO.FileUtil.GetWorkFilename(Sitecore.Configuration.Settings.TempFolderPath, printItem.Name, ".docx");
File.Copy(wordTemplatePath, wordOutputPath);
WordprocessingDocument doc = WordprocessingDocument.Open(wordOutputPath, true);
在我用内容“填充”文件后,我这样做:
Sitecore.Context.ClientPage.ClientResponse.Download(wordFilePath);
现在,如果我以 Sitecore 管理员身份登录,我会看到浏览器的下载对话框并可以下载文件。但是,如果我以非管理员用户身份登录,我会得到一点点点击和呼呼声,可以说,文件已生成,但浏览器中永远不会出现保存文件对话框。我可以通过文件系统进入并查看并打开 Word 文档,它看起来不错。
我在 6.6 的 Sitecore 发行说明中发现了一些内容:
发布 Sitecore CMS 和 DMS 6.6.0 rev。130111(6.6.0 更新 3)
[...]
各种各样的
Only Administrators were allowed to download files. (316774, 348557) This was a problem in several areas of the system, for example the Package Generator and the Export Language Wizard in the CMS. It also affected the Export Users Wizard in the ECM module.
所以我尝试使用 SecurityDisabler(不再有方便的代码)和 UserSwitcher,如下所示:
using (new Sitecore.Security.Accounts.UserSwitcher(Sitecore.Security.Accounts.User.FromName("sitecore\admin", false)))
{
Sitecore.Context.ClientPage.ClientResponse.Download(wordFilePath);
}
IUSR 和 IIS_IUSRS 帐户都对临时文件夹具有读取、列出和读取/执行权限,并且各个文件也显示这两个帐户的读取和读取/执行权限。
我可以做些什么来允许非管理员用户下载这些文件?6.6中修复的错误与它有什么关系吗?
谢谢你。