通过 move_uploaded_file() 将文件上传到 "assets" 文件夹

Upload file into "assets" folder via move_uploaded_file()

在 Service Cloud (FKA RightNow) 客户门户中,“assets”文件夹不是可写的吗?

我正在尝试将文件上传到“assets”文件夹内的子文件夹,但我似乎 运行 遇到权限问题。我使用的代码是:

$file_name = "File_".time().".txt";
if(move_uploaded_file($_FILES['upload']['tmp_name'], HTMLROOT . '/euf/assets/uploads/text/'.$file_name))
{
    header("Location: /app/read_file/file_name/".$file_name);
    exit;
}

这是抛出一个错误,指出:

Access to move_uploaded_file is denied because its trying to access restricted folders in ......

有没有办法通过PHP将上传的文件保存到“assets”子文件夹中?

编辑:

目的地似乎是正确的,就好像我使用:

echo HTMLROOT . '/euf/assets/uploads/text/'.$file_name

它打印:

/vhosts/sitename/euf/assets/upload/text/File_1480674311.txt

所以引用了正确的文件路径,但不知何故框架不允许我将它保存在那里。

更新

用例是这样的,一个人将通过 CP 上传一个 CSV/TXT 文件。该文件将包含联系信息(姓名、电子邮件等),然后(稍后)将读取这些信息以在 OSvC 中创建联系人。这将是一个重复的过程,可能一个月两次或三次。

由于上传时不会读取文件,因此将文件存储在某个地方是理想的解决方案。

正确,这些文件夹受 WebDAV 和文件系统强制执行的用户权限的保护。并且,assets 文件夹并非旨在作为您以这种身份使用的上传文件存储机制。

是否有理由将文件放在资产中,而不是将它们附加到事件或联系人对象中,而事件或联系人对象将在客户门户中操作的人员的上下文中?

如果您希望在客户门户中构建某种内容管理,那么我建议使用单独的文件存储产品,该产品提供 API 您可以更精细地管理文件,例如 Oracle Cloud Data Storage,然后您可以在 CP 中提供这些文件。

assets 文件夹中存储联系人记录或任何其他敏感数据是非常糟糕的做法。这些文件对 public 开放,就像存储在资产文件夹中的任何其他文件一样 - css、js、图像...

文件结构中还有其他文件夹更适合此用途。它们只能从代码级别访问。

你有机会使用 v16.8 吗?