我正在使用API_Alfresco,这是一个通过 Apache Chemistry 连接到 Alfresco 的库,但是当我尝试创建一个包含空格的文件夹时出现以下错误:
Uncaught CmisRuntimeException in C:\xampp\htdocs\API_Alfresco\cmis_repository_wrapper.php:176 Stack trace:
#0 C:\xampp\htdocs\API_Alfresco\cmis_repository_wrapper.php(207): CMISRepositoryWrapper->convertStatusCode(505, '')
#1 C:\xampp\htdocs\API_Alfresco\cmis_service.php(791): CMISRepositoryWrapper->doGet('...')
#2 C:\xampp\htdocs\API_Alfresco\APIAlfresco.php(98): CMISService->getObjectByPath('...', Array)
#3 C:\xampp\htdocs\phpCMISalfresco.php(33): APIAlfresco->setFolderByPath('...')
#4 {main} thrown in C:\xampp\htdocs\API_Alfresco
当我尝试创建一个没有空格的文件夹时,它工作正常。这是我的代码:
<?php
require 'APIAlfresco/APIAlfresco.php';
include 'connectAlfresco.php';
$parent_name = $_POST['parent']; //FAILS IF IT HAS BLANK SPACES
$uploaded_file = basename($_FILES['att_file']['name']); //Uploaded
$base_folder = "/path/to/site/folder/"
if (move_uploaded_file($_FILES['att_file']['tmp_name'], $uploaded_file)) {
$conexion->setFolderByPath($base_folder); //Set base folder where files will be uploaded
/*Check if dir already exists and create it if it doesn't */
if($conexion->existsFolder($parent_name)) echo "Parent".$parent_name." already exists";
else $conexion->createFolder($parent_name);
/*Move uploaded file into folder */
$conexion->setFolderByPath($base_folder."/".$parent_name); //ERROR HERE IF $parent_name HAS BLANK SPACES
$conexion->uploadFile($uploaded_file);
}
echo 'File infor:';
print_r($_FILES);
?>
我查看了错误跟踪并意识到doGet()内的doRequest()调用(在cmis_repository_wrapper.php中)在 HTTP 请求中返回错误(仅当文件夹包含空格时才会失败)。由于我没有对库进行编码,我似乎无法弄清楚可能出了什么问题。有什么线索吗?这可能是一个错误吗?
还进行了一些调试,并意识到 doRequest() 正在使用一个 URL,例如:
http://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.1/atom/path?path=/Sites/mysite/documentLibrary/Folder WithBlankSpaces&filter=&includeAllowableActions=&includeACL=&includePolicyIds=&includeRelationships=&renditionFilter=
在此链接中,我注意到可能触发错误的两件事:
1) “Folder WithBlankSpaces”文件夹将 URL 一分为二(很可能是实际问题)
2) url 最后一部分的变量未设置
我怀疑1)可能是真正的问题,因为如果我强制该文件夹没有空格(调用str_replace(' ', '', $parent_folder)
),那么它会正常工作。
我怎样才能让它与带有空格的文件夹一起使用?有什么方法可以修改该 URL,以便空格不会将其一分为二?当然,如果用户尝试创建“我的文件夹”,他想看到的是“我的文件夹”目录,而不是“我的文件夹”目录。
提前致谢!